* fhandler_socket.cc (fhandler_socket::connect): Change error

handling for nonblocking connects to return EALREADY when
connect is called more than once for the same socket.
This commit is contained in:
Thomas Pfaff 2003-06-07 11:05:35 +00:00
parent 729d1ff9d8
commit f496071c40
2 changed files with 14 additions and 6 deletions

View File

@ -1,3 +1,9 @@
2003-06-07 Thomas Pfaff <tpfaff@gmx.net>
* fhandler_socket.cc (fhandler_socket::connect): Change error
handling for nonblocking connects to return EALREADY when
connect is called more than once for the same socket.
2003-06-06 Corinna Vinschen <corinna@vinschen.de>
* cygwin.din: Add vsyslog.

View File

@ -502,6 +502,7 @@ fhandler_socket::connect (const struct sockaddr *name, int namelen)
BOOL in_progress = FALSE;
sockaddr_in sin;
int secret [4];
DWORD err;
if (!get_inet_addr (name, namelen, &sin, &namelen, secret))
return -1;
@ -514,12 +515,12 @@ fhandler_socket::connect (const struct sockaddr *name, int namelen)
when called on a non-blocking socket. */
if (is_nonblocking () || is_connect_pending ())
{
DWORD err = WSAGetLastError ();
err = WSAGetLastError ();
if (err == WSAEWOULDBLOCK || err == WSAEALREADY)
{
WSASetLastError (WSAEINPROGRESS);
in_progress = TRUE;
}
in_progress = TRUE;
if (err == WSAEWOULDBLOCK)
WSASetLastError (WSAEINPROGRESS);
else if (err == WSAEINVAL)
WSASetLastError (WSAEISCONN);
}
@ -556,7 +557,8 @@ fhandler_socket::connect (const struct sockaddr *name, int namelen)
}
}
if (WSAGetLastError () == WSAEINPROGRESS)
err = WSAGetLastError ();
if (err == WSAEINPROGRESS || err == WSAEALREADY)
set_connect_state (CONNECT_PENDING);
else
set_connect_state (CONNECTED);