* fhandler_socket.cc (fhandler_socket::signal_secret_event): New
function. * fhandler.h: Declare it. * fhandler_socket.cc (fhandler_socket::create_secret_event): Don't signal secret event immediately. (fhandler_socket::check_peer_secret_event): Do it after peer event was opened. * net.cc (cygwin_connect): Or if socket is non-blocking. (cygwin_accept): Ditto.
This commit is contained in:
@ -103,14 +103,18 @@ fhandler_socket::create_secret_event (int* secret)
|
||||
secret_event = OpenEvent (EVENT_ALL_ACCESS, FALSE, buf);
|
||||
|
||||
if (secret_event)
|
||||
{
|
||||
ProtectHandle (secret_event);
|
||||
SetEvent (secret_event);
|
||||
}
|
||||
ProtectHandle (secret_event);
|
||||
|
||||
return secret_event;
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_socket::signal_secret_event ()
|
||||
{
|
||||
if (secret_event)
|
||||
SetEvent (secret_event);
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_socket::close_secret_event ()
|
||||
{
|
||||
@ -136,6 +140,8 @@ fhandler_socket::check_peer_secret_event (struct sockaddr_in* peer, int* secret)
|
||||
ev = OpenEvent (EVENT_ALL_ACCESS, FALSE, buf);
|
||||
}
|
||||
|
||||
signal_secret_event ();
|
||||
|
||||
if (ev)
|
||||
{
|
||||
DWORD rc = WaitForSingleObject (ev, 10000);
|
||||
|
Reference in New Issue
Block a user