+5105. [bug] Fix a race between process_fd and socketclose in
+ unix socket code. [GL #744]
+
5104. [cleanup] Log clearer informational message when a catz zone
is overridden by a zone in named.conf.
Thanks to Tony Finch. [GL !1157]
#define SELECT_POKE_CONNECT (-4) /*%< Same as _WRITE */
#define SELECT_POKE_CLOSE (-5)
-#define SOCK_DEAD(s) (isc_refcount_current(&((s)->references)) == 0)
-
/*%
* Shortcut index arrays to get access to statistics counters.
*/
UNLOCK(&thread->fdlock[lockid]);
return;
}
- if (SOCK_DEAD(sock)) { /* Sock is being closed, bail */
- goto unlock_fd;
- }
- isc_refcount_increment(&sock->references);
+ if (isc_refcount_increment(&sock->references) == 0) {
+ /*
+ * Sock is being closed, it will be destroyed, bail.
+ */
+ isc_refcount_decrement(&sock->references);
+ UNLOCK(&thread->fdlock[lockid]);
+ return;
+ }
if (readable) {
if (sock->listener) {
}
}
- unlock_fd:
UNLOCK(&thread->fdlock[lockid]);
- if (sock != NULL) {
- if (isc_refcount_decrement(&sock->references) == 1) {
- destroy(&sock);
- }
+ if (isc_refcount_decrement(&sock->references) == 1) {
+ destroy(&sock);
}
}