summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler_socket.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2006-07-31 14:27:56 +0000
committerCorinna Vinschen <corinna@vinschen.de>2006-07-31 14:27:56 +0000
commitb23bc8c33cfd5ca607bcc07deaee616f9dceff35 (patch)
treecfe39a0f9f66fb4b1b739674566bbea7570bdb5f /winsup/cygwin/fhandler_socket.cc
parent1f7dbb011a3f08cac45fdda1b4a80d2abc262dcc (diff)
downloadcygnal-b23bc8c33cfd5ca607bcc07deaee616f9dceff35.tar.gz
cygnal-b23bc8c33cfd5ca607bcc07deaee616f9dceff35.tar.bz2
cygnal-b23bc8c33cfd5ca607bcc07deaee616f9dceff35.zip
* fhandler_socket.cc (fhandler_socket::recv_internal): Fix a problem
with poll(2) after shutdown(SHUT_RD) has been called on the local side. * poll.cc (poll): Use POSIX type nfds_t for second parameter. Drop special socket handling for POLLIN. Add comment to explain why. * include/sys/poll.h: Declare nfds_t. Use as type for second parameter in poll(2) declaration.
Diffstat (limited to 'winsup/cygwin/fhandler_socket.cc')
-rw-r--r--winsup/cygwin/fhandler_socket.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc
index 6a1cdd1e0..0fecdaaac 100644
--- a/winsup/cygwin/fhandler_socket.cc
+++ b/winsup/cygwin/fhandler_socket.cc
@@ -1160,7 +1160,8 @@ fhandler_socket::recv_internal (WSABUF *wsabuf, DWORD wsacnt, DWORD flags,
/* Note: Don't call WSARecvFrom(MSG_PEEK) without actually having data
waiting in the buffers, otherwise the event handling gets messed up
for some reason. */
- while (!(res = wait_for_events (evt_mask | FD_CLOSE)))
+ while (!(res = wait_for_events (evt_mask | FD_CLOSE))
+ || saw_shutdown_read ())
{
res = WSARecvFrom (get_socket (), wsabuf, wsacnt, &ret,
&flags, from, fromlen, NULL, NULL);