From b23bc8c33cfd5ca607bcc07deaee616f9dceff35 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 31 Jul 2006 14:27:56 +0000 Subject: * 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. --- winsup/cygwin/fhandler_socket.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'winsup/cygwin/fhandler_socket.cc') 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); -- cgit v1.2.3