Module: wine Branch: master Commit: f58c709b5f82ec6c850a723437933bbc21327da2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f58c709b5f82ec6c850a723437...
Author: Mike Kaplinskiy mike.kaplinskiy@gmail.com Date: Mon Jan 24 00:21:15 2011 -0500
server: Fix connect failures on newer kernels.
---
dlls/ws2_32/tests/sock.c | 2 +- server/sock.c | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index df6bff8..9d1de46 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 d37a316..b0efc16 100644 --- a/server/sock.c +++ b/server/sock.c @@ -388,18 +388,18 @@ static void sock_poll_event( struct fd *fd, int event )
if (sock->state & FD_CONNECT) { - /* connecting */ - if (event & POLLOUT) + if (event & (POLLERR|POLLHUP)) { - /* we got connected */ - sock->state |= FD_WINE_CONNECTED|FD_READ|FD_WRITE; + /* we didn't get connected? */ sock->state &= ~FD_CONNECT; + event &= ~POLLOUT; + error = sock_error( fd ); } - else if (event & (POLLERR|POLLHUP)) + else if (event & POLLOUT) { - /* we didn't get connected? */ + /* we got connected */ + sock->state |= FD_WINE_CONNECTED|FD_READ|FD_WRITE; sock->state &= ~FD_CONNECT; - error = sock_error( fd ); } } else if (sock->state & FD_WINE_LISTENING)