[PATCH 4/5] Use blocking output for the pipe

Bill Spitzak spitzak at gmail.com
Mon Mar 19 07:33:00 PDT 2012


On 03/19/2012 01:57 AM, Pekka Paalanen wrote:

>> --- a/src/connection.c
>> +++ b/src/connection.c
>> @@ -277,8 +277,7 @@ wl_connection_data(struct wl_connection *connection, uint32_t mask)
>>   		msg.msg_flags = 0;
>>
>>   		do {
>> -			len = sendmsg(connection->fd,&msg,
>> -				      MSG_NOSIGNAL | MSG_DONTWAIT);
>> +			len = sendmsg(connection->fd,&msg, MSG_NOSIGNAL);
>>   		} while (len<  0&&  errno == EINTR);
>>
>>   		if (len == -1&&  errno == EPIPE) {
>
> Are you sure this won't reintroduce the following issue?
> http://lists.freedesktop.org/archives/wayland-devel/2012-February/002394.html

I think you are right. However it looks like the current code fails on 
any EAGAIN and disconnects the client. If I understand the intention of 
the bug report, it should do nothing if the output ring buffer is not 
full, and if it is full it should empty it (or otherwise throw stuff 
away) and still not fail the client.

> Btw. Bill, good job with sending git patches. One more thing you could
> do, tell git your email address so it goes into the history right[1]:
> $ git config --global user.email you at yourdomain.example.com

Okay, that is done. They may want to fix it so I don't have to type my 
email in so many times, I had to put it in as user.email, 
sendemail.from, sendemail.envelopesender, and sendemail.smtpuser.


More information about the wayland-devel mailing list