mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-29 18:40:25 +08:00
* 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:
parent
729d1ff9d8
commit
f496071c40
@ -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.
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user