unwatch_fd(&sock->manager->threads[sock->threadid], sock->fd,
SELECT_POKE_READ);
}
- UNLOCK(&sock->lock);
}
static void
unwatch_fd(&sock->manager->threads[sock->threadid], sock->fd,
SELECT_POKE_WRITE);
}
- UNLOCK(&sock->lock);
}
/*
}
REQUIRE(readable || writeable);
- if (readable) {
- if (sock->listener) {
- internal_accept(sock);
- } else {
- internal_recv(sock);
- }
- }
-
if (writeable) {
if (sock->connecting) {
internal_connect(sock);
}
}
- /* sock->lock is unlocked in internal_* function */
+ if (readable) {
+ if (sock->listener) {
+ internal_accept(sock); /* unlocks sock */
+ } else {
+ internal_recv(sock);
+ UNLOCK(&sock->lock);
+ }
+ } else {
+ UNLOCK(&sock->lock);
+ }
+
UNLOCK(&thread->fdlock[lockid]);
/*
finish:
unwatch_fd(&sock->manager->threads[sock->threadid], sock->fd,
SELECT_POKE_CONNECT);
- UNLOCK(&sock->lock);
}
isc_result_t