diff --git a/server/request.c b/server/request.c index 597bf886c84..b937e6f06a4 100644 --- a/server/request.c +++ b/server/request.c @@ -241,7 +241,7 @@ void write_reply( struct thread *thread ) } if (errno == EPIPE) kill_thread( thread, 0 ); /* normal death */ - else if (errno != EWOULDBLOCK && errno != EAGAIN) + else if (errno != EWOULDBLOCK && (EWOULDBLOCK == EAGAIN || errno != EAGAIN)) fatal_protocol_error( thread, "reply write: %s\n", strerror( errno )); } @@ -368,7 +368,7 @@ error: kill_thread( thread, 0 ); else if (ret > 0) fatal_protocol_error( thread, "partial read %d\n", ret ); - else if (errno != EWOULDBLOCK && errno != EAGAIN) + else if (errno != EWOULDBLOCK && (EWOULDBLOCK == EAGAIN || errno != EAGAIN)) fatal_protocol_error( thread, "read: %s\n", strerror( errno )); } @@ -449,7 +449,7 @@ int receive_fd( struct process *process ) } else { - if (errno != EWOULDBLOCK && errno != EAGAIN) + if (errno != EWOULDBLOCK && (EWOULDBLOCK == EAGAIN || errno != EAGAIN)) { fprintf( stderr, "Protocol error: process %04x: ", process->id ); perror( "recvmsg" ); diff --git a/server/sock.c b/server/sock.c index dc10d2a415f..89049e0e878 100644 --- a/server/sock.c +++ b/server/sock.c @@ -1075,8 +1075,8 @@ static void ifchange_poll_event( struct fd *fd, int event ) r = recv( get_unix_fd(fd), buffer, sizeof(buffer), MSG_DONTWAIT ); if (r < 0) { - if (errno == EWOULDBLOCK || errno == EAGAIN) - return; /* retry when poll() says the socket is ready */ + if (errno == EWOULDBLOCK || (EWOULDBLOCK != EAGAIN && errno == EAGAIN)) + return; /* retry when poll() says the socket is ready */ status = sock_get_ntstatus( errno ); } else if (r > 0)