From f58c709b5f82ec6c850a723437933bbc21327da2 Mon Sep 17 00:00:00 2001 From: Mike Kaplinskiy Date: Mon, 24 Jan 2011 00:21:15 -0500 Subject: [PATCH] server: Fix connect failures on newer kernels. --- dlls/ws2_32/tests/sock.c | 2 +- server/sock.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index df6bff81296..9d1de465dda 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -4026,7 +4026,7 @@ static void test_ConnectEx(void) closesocket(listener); listener = INVALID_SOCKET; - address.sin_port = 1; + address.sin_port = htons(1); bret = pConnectEx(connector, (struct sockaddr*)&address, addrlen, NULL, 0, &bytesReturned, &overlapped); ok(bret == FALSE && GetLastError(), "ConnectEx to bad destination failed: " diff --git a/server/sock.c b/server/sock.c index d37a316a68a..b0efc1634b3 100644 --- a/server/sock.c +++ b/server/sock.c @@ -388,19 +388,19 @@ static void sock_poll_event( struct fd *fd, int event ) if (sock->state & FD_CONNECT) { - /* connecting */ - if (event & POLLOUT) + if (event & (POLLERR|POLLHUP)) + { + /* we didn't get connected? */ + sock->state &= ~FD_CONNECT; + event &= ~POLLOUT; + error = sock_error( fd ); + } + else if (event & POLLOUT) { /* we got connected */ sock->state |= FD_WINE_CONNECTED|FD_READ|FD_WRITE; sock->state &= ~FD_CONNECT; } - else if (event & (POLLERR|POLLHUP)) - { - /* we didn't get connected? */ - sock->state &= ~FD_CONNECT; - error = sock_error( fd ); - } } else if (sock->state & FD_WINE_LISTENING) {