[PATCH 1/2] server: Only remove non-listening fd from poll

Torge Matthies openglfreak at googlemail.com
Fri Jul 2 16:59:37 CDT 2021


On 7/2/21 9:33 PM, Zebediah Figura (she/her) wrote:
> On 7/2/21 1:06 PM, David Koolhoven wrote:
>> This makes sure we poll listening non-connection
>> file descriptors even if the event is POLLERR or POLLHUP.
>>
>> Signed-off-by: David Koolhoven <david at koolhoven-home.net>
>> ---
>>   server/sock.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/server/sock.c b/server/sock.c
>> index befa9117c13..ce2f390ec05 100644
>> --- a/server/sock.c
>> +++ b/server/sock.c
>> @@ -1024,7 +1024,7 @@ static void sock_poll_event( struct fd *fd, int 
>> event )
>>           fprintf(stderr, "socket %p select event: %x\n", sock, event);
>>       /* we may change event later, remove from loop here */
>> -    if (event & (POLLERR|POLLHUP)) set_fd_events( sock->fd, -1 );
>> +    if (event & (POLLERR|POLLHUP) && sock->state != SOCK_LISTENING) 
>> set_fd_events( sock->fd, -1 );
>>       switch (sock->state)
>>       {
>>
> 
> This doesn't look right. Why do we need to do this?
> 

I only added this because there was no code path with sock->state == 
SOCK_LISTENING that didn't already lead to a set_fd_events call, which 
overrides this one, so calling it here is useless. It doesn't fix 
anything and might add more code complexity than optimizing away one 
epoll_ctl call is worth.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0x7C95CD70C9E8438D.asc
Type: application/pgp-keys
Size: 7245 bytes
Desc: OpenPGP public key
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20210702/106c6012/attachment.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20210702/106c6012/attachment.sig>


More information about the wine-devel mailing list