* 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:
Corinna Vinschen
2002-07-06 11:16:07 +00:00
parent 6201dd26a6
commit 6bb769efa0
5 changed files with 55 additions and 20 deletions

View File

@ -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;
}