mirror of
https://github.com/moparisthebest/curl
synced 2025-01-09 04:58:00 -05:00
sockfilt.c: Fixed handling of multiple fds being signaled
This commit is contained in:
parent
688124f0e9
commit
5e722b2d09
@ -632,7 +632,7 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
|
|||||||
fds = curlx_sktosi(sock);
|
fds = curlx_sktosi(sock);
|
||||||
|
|
||||||
/* check if the current internal handle was triggered */
|
/* check if the current internal handle was triggered */
|
||||||
if(wait != WAIT_FAILED && (wait - WAIT_OBJECT_0) >= idx &&
|
if(wait != WAIT_FAILED && (wait - WAIT_OBJECT_0) <= idx &&
|
||||||
WaitForSingleObjectEx(handle, 0, FALSE) == WAIT_OBJECT_0) {
|
WaitForSingleObjectEx(handle, 0, FALSE) == WAIT_OBJECT_0) {
|
||||||
/* try to handle the event with STD* handle functions */
|
/* try to handle the event with STD* handle functions */
|
||||||
if(fds == fileno(stdin)) {
|
if(fds == fileno(stdin)) {
|
||||||
@ -682,7 +682,7 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* try to handle the event with the WINSOCK2 functions */
|
/* try to handle the event with the WINSOCK2 functions */
|
||||||
error = WSAEnumNetworkEvents(fds, NULL, &wsanetevents);
|
error = WSAEnumNetworkEvents(fds, handle, &wsanetevents);
|
||||||
if(error != SOCKET_ERROR) {
|
if(error != SOCKET_ERROR) {
|
||||||
/* remove from descriptor set if not ready for read/accept/close */
|
/* remove from descriptor set if not ready for read/accept/close */
|
||||||
if(!(wsanetevents.lNetworkEvents & (FD_READ|FD_ACCEPT|FD_CLOSE)))
|
if(!(wsanetevents.lNetworkEvents & (FD_READ|FD_ACCEPT|FD_CLOSE)))
|
||||||
|
Loading…
Reference in New Issue
Block a user