]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
fix to set pending pointer in reuse tcp structure
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Tue, 9 Jun 2020 07:14:01 +0000 (09:14 +0200)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Tue, 9 Jun 2020 07:14:01 +0000 (09:14 +0200)
fix debug output of reuse tcp and test leak of process

services/outside_network.c
testdata/tcp_reuse.tdir/tcp_reuse.post

index bb0792c064dae47df054e5a1aba9bd764dfe8ee4..f11999d7c863a7eead23c49f02f1b94d0ccfed77 100644 (file)
@@ -457,6 +457,7 @@ outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len)
        pend->query = w;
        pend->c->repinfo.addrlen = w->addrlen;
        memcpy(&pend->c->repinfo.addr, &w->addr, w->addrlen);
+       pend->reuse.pending = pend;
        outnet_tcp_take_query_setup(s, pend, pkt, pkt_len);
        return 1;
 }
@@ -550,8 +551,8 @@ log_reuse_tcp(enum verbosity_value v, const char* msg, struct reuse_tcp* reuse)
        if(verbosity < v) return;
        addr_to_str(&reuse->addr, reuse->addrlen, addrbuf, sizeof(addrbuf));
        port = ntohs(((struct sockaddr_in*)&reuse->addr)->sin_port);
-       verbose(v, "%s %s %u %lx", msg, addrbuf, (unsigned)port,
-               (unsigned long)reuse);
+       verbose(v, "%s %s#%u 0x%llx fd %d", msg, addrbuf, (unsigned)port,
+               (unsigned long long)reuse, reuse->pending->c->fd);
 }
 
 /** insert into reuse tcp tree and LRU, false on failure (duplicate) */
@@ -1734,6 +1735,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet,
                        verbose(5, "pending_tcp_query: new fd, connect");
                        /* create new fd and connect to addr, setup to
                         * write query */
+                       pend->reuse.pending = pend;
                        memcpy(&pend->reuse.addr, &sq->addr, sq->addrlen);
                        pend->reuse.addrlen = sq->addrlen;
                        if(!outnet_tcp_take_into_use(w,
index a1cdef9abb2f230f916d4fba4a152e81e4938eb4..ca75354714ed6b9fb8f3629e2555278076cfcce0 100644 (file)
@@ -6,7 +6,7 @@
 #
 # do your teardown here
 . ../common.sh
-kill_pid $UPSTREAM_PID
+kill_pid `cat unbound2.pid`
 if test -f unbound2.log; then
        echo ">>> upstream log"
        cat unbound2.log