diff options
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_socket.cc | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 3d5a5fe86..cf18bb19d 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,10 @@ 2014-10-14 Corinna Vinschen <corinna@vinschen.de> + * fhandler_socket.cc (fhandler_socket::connect): Don't change state + on WSAEALREADY error. Change comment accordingly. + +2014-10-14 Corinna Vinschen <corinna@vinschen.de> + * cygheap.cc (init_cygheap::init_installation_root): Install Cygwin's installation dir as DLL search path, instead of ".". * cygheap.h (class cwdstuff): Add parameter names in function diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc index d27b5baaf..6a13e4d77 100644 --- a/winsup/cygwin/fhandler_socket.cc +++ b/winsup/cygwin/fhandler_socket.cc @@ -1201,8 +1201,9 @@ fhandler_socket::connect (const struct sockaddr *name, int namelen) Convert to POSIX/Linux compliant EISCONN. */ else if (err == WSAEINVAL && connect_state () == listener) WSASetLastError (WSAEISCONN); - /* Any other error means the connmect failed. */ - else if (connect_state () == connect_pending) + /* Any other error except WSAEALREADY during connect_pending means the + connect failed. */ + else if (connect_state () == connect_pending && err != WSAEALREADY) connect_state (connect_failed); set_winsock_errno (); } |