From: Oliver Kurth Date: Tue, 19 Feb 2019 20:51:30 +0000 (-0800) Subject: [Asyncsocket] Avoid ASSERT failure when removing recv callback if fd has POLL_FLAG_AC... X-Git-Tag: stable-11.0.0~242 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ba975b71a38b96f19f06ed2dc6dd37acd421e99e;p=thirdparty%2Fopen-vm-tools.git [Asyncsocket] Avoid ASSERT failure when removing recv callback if fd has POLL_FLAG_ACCEPT_INVALID_FDS flag set. --- diff --git a/open-vm-tools/lib/asyncsocket/asyncsocket.c b/open-vm-tools/lib/asyncsocket/asyncsocket.c index 65b07109a..855b86b49 100644 --- a/open-vm-tools/lib/asyncsocket/asyncsocket.c +++ b/open-vm-tools/lib/asyncsocket/asyncsocket.c @@ -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; } }