]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
sockfilt: avoid getting stuck waiting for writable socket
authorMarc Hoersken <info@marc-hoersken.de>
Sun, 2 May 2021 18:42:11 +0000 (20:42 +0200)
committerMarc Hoersken <info@marc-hoersken.de>
Wed, 5 May 2021 20:30:12 +0000 (22:30 +0200)
Reset FD_WRITE event using the same approach as in multi.c

Follow up to b36442b24305f3cda7c13cc64b46838995a4985b
Closes #6992

tests/server/sockfilt.c

index e29e118714fb95d4877197db4a525b0733030aed..7009b2585bfd5dabeb1fba8cacbd937a50476c06 100644 (file)
@@ -741,6 +741,9 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
       else {
         wsaevent = WSACreateEvent();
         if(wsaevent != WSA_INVALID_EVENT) {
+          if(wsaevents.lNetworkEvents & FD_WRITE) {
+            send(wsasock, NULL, 0, 0); /* reset FD_WRITE */
+          }
           error = WSAEventSelect(wsasock, wsaevent, wsaevents.lNetworkEvents);
           if(error != SOCKET_ERROR) {
             handles[nfd] = (HANDLE)wsaevent;