summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler_socket.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2012-06-19 00:31:15 +0000
committerChristopher Faylor <me@cgf.cx>2012-06-19 00:31:15 +0000
commitaf5cd145835d35519af02d0d226f67eb777e4945 (patch)
treed31ebb964550d4e73c3f0d63d3fa0d1b502e44f4 /winsup/cygwin/fhandler_socket.cc
parent88fbcb5afd6d7d687387b22509037d99e2aa07ff (diff)
downloadcygnal-af5cd145835d35519af02d0d226f67eb777e4945.tar.gz
cygnal-af5cd145835d35519af02d0d226f67eb777e4945.tar.bz2
cygnal-af5cd145835d35519af02d0d226f67eb777e4945.zip
* cygwait.cc (cancelable_wait): Mimic old cygwait behavior more closely wrt
handling of call_signal_handler. * cygwait.h (WAIT_CANCELED): Move here and redefine. (WAIT_SIGNALED): Ditto. * thread.h (WAIT_CANCELED): Delete. (WAIT_SIGNALED): Ditto.
Diffstat (limited to 'winsup/cygwin/fhandler_socket.cc')
-rw-r--r--winsup/cygwin/fhandler_socket.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc
index f78002801..611e70619 100644
--- a/winsup/cygwin/fhandler_socket.cc
+++ b/winsup/cygwin/fhandler_socket.cc
@@ -130,7 +130,7 @@ get_inet_addr (const struct sockaddr *in, int inlen,
pthread_testcancel ();
/* Using IsEventSignalled like this is racy since another thread could
be waiting for signal_arrived. */
- if (IsEventSignalled (signal_arrived)
+ if (cancelable_wait (NULL, cw_nowait, cw_sig_eintr) == WAIT_SIGNALED
&& !_my_tls.call_signal_handler ())
{
set_errno (EINTR);
@@ -662,7 +662,8 @@ fhandler_socket::wait_for_events (const long event_mask, const DWORD flags)
return SOCKET_ERROR;
}
- WSAEVENT ev[2] = { wsock_evt, signal_arrived };
+ WSAEVENT ev[2] = { wsock_evt };
+ set_thread_waiting (ev[1]);
switch (WSAWaitForMultipleEvents (2, ev, FALSE, 50, FALSE))
{
case WSA_WAIT_TIMEOUT:
@@ -1784,7 +1785,7 @@ fhandler_socket::close ()
res = -1;
break;
}
- if (WaitForSingleObject (signal_arrived, 10) == WAIT_OBJECT_0)
+ if (cygwait (10) == WAIT_SIGNALED)
{
set_errno (EINTR);
res = -1;