int (*recv)(AsyncSocket *asock, void *buf, int len);
PollerFunction recvCallback;
Bool (*hasDataPending)(AsyncSocket *asock);
+ void (*cancelListenCb)(AsyncSocket *asock);
void (*cancelRecvCb)(AsyncSocket *asock);
void (*cancelCbForClose)(AsyncSocket *asock);
Bool (*cancelCbForConnectingClose)(AsyncSocket *asock);
void AsyncSocketDispatchConnect(AsyncSocket *asock, AsyncSocket *newsock);
void AsyncSocketRecvCallback(void *clientData);
int AsyncSocketRecvSocket(AsyncSocket *asock, void *buf, int len);
+void AsyncSocketCancelListenCbSocket(AsyncSocket *asock);
void AsyncSocketCancelRecvCbSocket(AsyncSocket *asock);
void AsyncSocketCancelCbForCloseSocket(AsyncSocket *asock);
Bool AsyncSocketCancelCbForConnectingCloseSocket(AsyncSocket *asock);
AsyncSocketRecvSocket,
AsyncSocketRecvCallback,
AsyncSocketHasDataPendingSocket,
+ AsyncSocketCancelListenCbSocket,
AsyncSocketCancelRecvCbSocket,
AsyncSocketCancelCbForCloseSocket,
AsyncSocketCancelCbForConnectingCloseSocket,
AsyncSocketRecvSocket,
AsyncSocketRecvUDPCallback,
AsyncSocketHasDataPendingSocket,
+ AsyncSocketCancelListenCbSocket,
AsyncSocketCancelRecvCbSocket,
AsyncSocketCancelCbForCloseSocket,
AsyncSocketCancelCbForConnectingCloseSocket,
}
+/*
+ *----------------------------------------------------------------------------
+ *
+ * AsyncSocketCancelListenCbSocket --
+ *
+ * Socket specific code for canceling callbacks for a listening socket.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------------
+ */
+
+void
+AsyncSocketCancelListenCbSocket(AsyncSocket *asock) // IN:
+{
+ Bool removed;
+
+ ASSERT(AsyncSocketIsLocked(asock));
+
+ removed = AsyncSocketPollRemove(asock, TRUE,
+ POLL_FLAG_READ | POLL_FLAG_PERIODIC,
+ AsyncSocketAcceptCallback);
+ ASSERT(removed);
+}
+
+
/*
*----------------------------------------------------------------------------
*
switch(oldState) {
case AsyncSocketListening:
- ASSERT(asock->asockType != ASYNCSOCKET_TYPE_NAMEDPIPE);
ASOCKLOG(1, asock, ("old state was listening, removing accept callback\n"));
- removed = AsyncSocketPollRemove(asock, TRUE,
- POLL_FLAG_READ | POLL_FLAG_PERIODIC,
- AsyncSocketAcceptCallback);
- ASSERT(removed);
+ ASSERT(asock->vt->cancelListenCb);
+ asock->vt->cancelListenCb(asock);
break;
case AsyncSocketConnecting: