Mike Kaplinskiy : server: Set FD_READ in only 1 place (cleanup).

Alexandre Julliard julliard at winehq.org
Thu May 13 13:15:01 CDT 2010


Module: wine
Branch: master
Commit: f928580ac3fb8daa630904880d386978946fb4e8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f928580ac3fb8daa630904880d386978946fb4e8

Author: Mike Kaplinskiy <mike.kaplinskiy at gmail.com>
Date:   Wed May 12 01:59:01 2010 -0400

server: Set FD_READ in only 1 place (cleanup).

---

 server/sock.c |   17 ++++-------------
 1 files changed, 4 insertions(+), 13 deletions(-)

diff --git a/server/sock.c b/server/sock.c
index b460fa7..753518d 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -381,18 +381,9 @@ static void sock_poll_event( struct fd *fd, int event )
             /* Linux 2.4 doesn't report POLLHUP if only one side of the socket
              * has been closed, so we need to check for it explicitly here */
             nr  = recv( get_unix_fd( fd ), &dummy, 1, MSG_PEEK );
-            if ( nr > 0 )
-            {
-                /* incoming data */
-                sock->pmask |= FD_READ;
-                sock->hmask |= (FD_READ|FD_CLOSE);
-                sock->errors[FD_READ_BIT] = 0;
-                if (debug_level)
-                    fprintf(stderr, "socket %p is readable\n", sock );
-            }
-            else if ( nr == 0 )
+            if ( nr == 0 )
                 hangup_seen = 1;
-            else
+            else if ( nr < 0 )
             {
                 /* EAGAIN can happen if an async recv() falls between the server's poll()
                    call and the invocation of this routine */
@@ -411,14 +402,14 @@ static void sock_poll_event( struct fd *fd, int event )
         {
             hangup_seen = 1;
         }
-        else if ( event & POLLIN ) /* POLLIN for non-stream socket */
+
+        if ( event & POLLIN && !hangup_seen )
         {
             sock->pmask |= FD_READ;
             sock->hmask |= (FD_READ|FD_CLOSE);
             sock->errors[FD_READ_BIT] = 0;
             if (debug_level)
                 fprintf(stderr, "socket %p is readable\n", sock );
-
         }
 
         if (event & POLLOUT)




More information about the wine-cvs mailing list