summaryrefslogtreecommitdiff
path: root/lib/multi.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/multi.c')
-rw-r--r--lib/multi.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/multi.c b/lib/multi.c
index f4448f7c4..2a9124648 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -1184,7 +1184,7 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi,
#ifdef USE_WINSOCK
if(SOCKET_READABLE(sockbunch[i], 0) > 0)
timeout_ms = 0;
- mask |= FD_READ;
+ mask |= (FD_READ|FD_ACCEPT|FD_CLOSE);
#else
ufds[nfds].fd = sockbunch[i];
ufds[nfds].events = POLLIN;
@@ -1196,7 +1196,7 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi,
#ifdef USE_WINSOCK
if(SOCKET_WRITABLE(sockbunch[i], 0) > 0)
timeout_ms = 0;
- mask |= FD_WRITE;
+ mask |= (FD_WRITE|FD_CONNECT|FD_CLOSE);
#else
ufds[nfds].fd = sockbunch[i];
ufds[nfds].events = POLLOUT;
@@ -1226,7 +1226,7 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi,
pre_poll.events = 0;
pre_poll.revents = 0;
if(extra_fds[i].events & CURL_WAIT_POLLIN) {
- events |= FD_READ;
+ events |= (FD_READ|FD_ACCEPT|FD_CLOSE);
pre_poll.events |= POLLIN;
}
if(extra_fds[i].events & CURL_WAIT_POLLPRI) {
@@ -1234,7 +1234,7 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi,
pre_poll.events |= POLLPRI;
}
if(extra_fds[i].events & CURL_WAIT_POLLOUT) {
- events |= FD_WRITE;
+ events |= (FD_WRITE|FD_CONNECT|FD_CLOSE);
pre_poll.events |= POLLOUT;
}
if(Curl_poll(&pre_poll, 1, 0) > 0) {
@@ -1299,9 +1299,9 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi,
mask = extra_fds[i].revents;
if(WSAEnumNetworkEvents(extra_fds[i].fd, multi->wsa_event,
&events) == 0) {
- if(events.lNetworkEvents & FD_READ)
+ if(events.lNetworkEvents & (FD_READ|FD_ACCEPT|FD_CLOSE))
mask |= CURL_WAIT_POLLIN;
- if(events.lNetworkEvents & FD_WRITE)
+ if(events.lNetworkEvents & (FD_WRITE|FD_CONNECT|FD_CLOSE))
mask |= CURL_WAIT_POLLOUT;
if(events.lNetworkEvents & FD_OOB)
mask |= CURL_WAIT_POLLPRI;