]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
[Asyncsocket] Avoid ASSERT failure when removing recv callback if fd has POLL_FLAG_AC...
authorOliver Kurth <okurth@vmware.com>
Tue, 19 Feb 2019 20:51:30 +0000 (12:51 -0800)
committerOliver Kurth <okurth@vmware.com>
Tue, 19 Feb 2019 20:51:30 +0000 (12:51 -0800)
open-vm-tools/lib/asyncsocket/asyncsocket.c

index 65b07109afc0f3ef2823fc01a6e68bf123dacd01..855b86b49022fc3210c5e642beab94d1b2036615 100644 (file)
@@ -4311,7 +4311,15 @@ AsyncTCPSocketCancelRecvCb(AsyncTCPSocket *asock)  // IN:
       removed = AsyncTCPSocketPollRemove(asock, TRUE,
                                          POLL_FLAG_READ | POLL_FLAG_PERIODIC,
                                          asock->internalRecvFn);
-      ASSERT(removed || AsyncTCPSocketPollParams(asock)->iPoll);
+
+      /*
+       * A recv callback registered on a bad FD can be deleted by
+       * PollHandleInvalidFd if POLL_FLAG_ACCEPT_INVALID_FDS flag
+       * is added to asyncsocket.
+       */
+      ASSERT(removed || AsyncTCPSocketPollParams(asock)->iPoll ||
+             (AsyncTCPSocketPollParams(asock)->flags &
+              POLL_FLAG_ACCEPT_INVALID_FDS) != 0);
       asock->recvCb = FALSE;
    }
 }