From 394a142237795d0823dd73677026be0b0ee502b3 Mon Sep 17 00:00:00 2001 From: Mike Kaplinskiy Date: Sat, 17 Jul 2010 22:06:53 -0400 Subject: [PATCH] server: Propagate error from recv. --- server/sock.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/sock.c b/server/sock.c index 5d48c2d37a..87628dab4b 100644 --- a/server/sock.c +++ b/server/sock.c @@ -419,16 +419,17 @@ static void sock_poll_event( struct fd *fd, int event ) call and the invocation of this routine */ if ( errno != EAGAIN ) { + error = errno; + event |= POLLERR; if ( debug_level ) fprintf( stderr, "recv error on socket %p: %d\n", sock, errno ); - event |= POLLERR; } } } if ( (hangup_seen || event & (POLLHUP|POLLERR)) && (sock->state & (FD_READ|FD_WRITE)) ) { - error = sock_error( fd ); + error = error ? error : sock_error( fd ); if ( (event & POLLERR) || ( sock_shutdown_type == SOCK_SHUTDOWN_EOF && (event & POLLHUP) )) sock->state &= ~FD_WRITE; sock->state &= ~FD_READ;