From 50e4b6d55770e59d6e842006b1e8d6c70a4fdc62 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 14 Oct 2014 19:43:09 +0000 Subject: [PATCH] * fhandler_socket.cc (fhandler_socket::connect): Don't change state on WSAEALREADY error. Change comment accordingly. --- winsup/cygwin/ChangeLog | 5 +++++ 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,3 +1,8 @@ +2014-10-14 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::connect): Don't change state + on WSAEALREADY error. Change comment accordingly. + 2014-10-14 Corinna Vinschen * cygheap.cc (init_cygheap::init_installation_root): Install Cygwin's 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 (); }