OSDN Git Service

* net.cc (cygwin_connect): Add WSAEALREADY and WSAEINVAL handling
authorcorinna <corinna>
Wed, 5 Sep 2001 08:16:51 +0000 (08:16 +0000)
committercorinna <corinna>
Wed, 5 Sep 2001 08:16:51 +0000 (08:16 +0000)
        for non-blocking sockets.

winsup/cygwin/ChangeLog
winsup/cygwin/net.cc

index 1d60b7f..4728bc1 100644 (file)
@@ -1,3 +1,8 @@
+Wed Sep  5 10:14:00 2001  Corinna Vinschen <corinna@vinschen.de>
+
+       * net.cc (cygwin_connect): Add WSAEALREADY and WSAEINVAL handling
+       for non-blocking sockets.
+
 Tue Sep  4 22:42:13 2001  Christopher Faylor <cgf@cygnus.com>
 
        * exceptions.cc (ctrl_c_handler): Only send SIGINT when we have a
index 7077220..1715b16 100644 (file)
@@ -868,13 +868,18 @@ cygwin_connect (int fd,
       if (res)
        {
          /* Special handling for connect to return the correct error code
-            when called to early on a non-blocking socket. */
-         if (WSAGetLastError () == WSAEWOULDBLOCK)
+            when called on a non-blocking socket. */
+         if (sock->is_nonblocking ())
            {
-             WSASetLastError (WSAEINPROGRESS);
-             in_progress = TRUE;
+             DWORD err = WSAGetLastError ();
+             if (err == WSAEWOULDBLOCK || err == WSAEALREADY)
+               {
+                 WSASetLastError (WSAEINPROGRESS);
+                 in_progress = TRUE;
+               }
+             else if (err == WSAEINVAL)
+               WSASetLastError (WSAEISCONN);
            }
-
          set_winsock_errno ();
        }
       if (sock->get_addr_family () == AF_UNIX)