]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix tcp timer waiting list removal code.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 16 Sep 2014 13:08:27 +0000 (13:08 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 16 Sep 2014 13:08:27 +0000 (13:08 +0000)
git-svn-id: file:///svn/unbound/trunk@3222 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
services/outside_network.c

index 4b3fbf08aa0c57c0817b8e33fa68ad069dc104b4..3166146aac8c425fbef4ddf1512ee20360ced28a 100644 (file)
@@ -1,3 +1,6 @@
+16 September 2014: Wouter
+       - Fix tcp timer waiting list removal code.
+
 15 September 2014: Wouter
        - Fix unit test for CDS typecode.
 
index 33ae79fb822ea2dc7abfcdf70c12390ce66e4c04..986c53dd81202f3314ec645fa86ede18d5ba1a69 100644 (file)
@@ -81,6 +81,10 @@ static void serviced_tcp_initiate(struct serviced_query* sq, sldns_buffer* buff)
 static int randomize_and_send_udp(struct pending* pend, sldns_buffer* packet,
        int timeout);
 
+/** remove waiting tcp from the outnet waiting list */
+static void waiting_list_remove(struct outside_network* outnet,
+       struct waiting_tcp* w);
+
 int 
 pending_cmp(const void* key1, const void* key2)
 {
@@ -1100,17 +1104,7 @@ outnet_tcptimer(void* arg)
        void* cb_arg;
        if(w->pkt) {
                /* it is on the waiting list */
-               struct waiting_tcp* p=outnet->tcp_wait_first, *prev=NULL;
-               while(p) {
-                       if(p == w) {
-                               if(prev) prev->next_waiting = w->next_waiting;
-                               else    outnet->tcp_wait_first=w->next_waiting;
-                               outnet->tcp_wait_last = prev;
-                               break;
-                       }
-                       prev = p;
-                       p=p->next_waiting;
-               }
+               waiting_list_remove(outnet, w);
        } else {
                /* it was in use */
                struct pending_tcp* pend=(struct pending_tcp*)w->next_waiting;