]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add missing isc_refcount_destroy and lock the socket ISC_LISTS in destroy()
authorOndřej Surý <ondrej@isc.org>
Thu, 12 Dec 2019 11:59:39 +0000 (12:59 +0100)
committerOndřej Surý <ondrej@isc.org>
Thu, 12 Dec 2019 11:59:39 +0000 (12:59 +0100)
lib/isc/unix/socket.c

index 7b7c8fc2babb76045cb822f3aac1bce1a0d3228d..9cff8de2189f62fa558cd20d03aa180dd8e0ad93 100644 (file)
@@ -1832,15 +1832,17 @@ destroy(isc__socket_t **sockp) {
        isc__socketmgr_t *manager = sock->manager;
        isc__socketthread_t *thread = NULL;
 
+       isc_refcount_destroy(&sock->references);
+
        socket_log(sock, NULL, CREATION, "destroying");
 
+       LOCK(&sock->lock);
        INSIST(ISC_LIST_EMPTY(sock->connect_list));
        INSIST(ISC_LIST_EMPTY(sock->accept_list));
        INSIST(ISC_LIST_EMPTY(sock->recv_list));
        INSIST(ISC_LIST_EMPTY(sock->send_list));
        INSIST(sock->fd >= -1 && sock->fd < (int)manager->maxsocks);
 
-       LOCK(&sock->lock);
        if (sock->fd >= 0) {
                fd = sock->fd;
                thread = &manager->threads[sock->threadid];