* fhandler.h (fhandler_socket::is_unconnected): Constify.
(fhandler_socket::is_connect_pending): Ditto. (fhandler_socket::is_connected): Ditto. (fhandler_socket::set_connect_state): New method. (struct select_record): Add member `except_on_write'. (select_record::select_record): Initialize all bool values to `false'. * fhandler_socket.cc: Use set_connect_state() method throughout. (fhandler_socket::connect): Set state always to connected if connection isn't pending. * net.cc (cygwin_getsockopt): Revert erroneous previous patch. * select.cc (set_bits): Check for `except_on_write'. Set fd in write_fds if set. Set connect state to connected if fd has been returned by WINSOCK_SELECT. (peek_socket): Check for `except_on_write'. (start_thread_socket): Ditto. (fhandler_socket::select_write): Don't set `write_ready' if connect is pending. Set `except_on_write' if connect is pending.
This commit is contained in:
@ -455,10 +455,10 @@ fhandler_socket::connect (const struct sockaddr *name, int namelen)
|
||||
}
|
||||
}
|
||||
|
||||
if (!res)
|
||||
had_connect_or_listen = CONNECTED;
|
||||
else if (WSAGetLastError () == WSAEINPROGRESS)
|
||||
had_connect_or_listen = CONNECT_PENDING;
|
||||
if (WSAGetLastError () == WSAEINPROGRESS)
|
||||
set_connect_state (CONNECT_PENDING);
|
||||
else
|
||||
set_connect_state (CONNECTED);
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -469,7 +469,7 @@ fhandler_socket::listen (int backlog)
|
||||
if (res)
|
||||
set_winsock_errno ();
|
||||
else
|
||||
had_connect_or_listen = CONNECTED;
|
||||
set_connect_state (CONNECTED);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user