]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
ip6 functionality.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 7 Jun 2007 15:04:27 +0000 (15:04 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 7 Jun 2007 15:04:27 +0000 (15:04 +0000)
git-svn-id: file:///svn/unbound/trunk@376 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
iterator/iter_utils.c
iterator/iterator.c
services/outside_network.c

index 3238d43feead1b029446d465e2b192572b45e78b..f9a78af931fbaec5cf5226c31f4f5116b4b9b96a 100644 (file)
@@ -13,6 +13,9 @@
          VERB_ALGO, verbosity: 3 gives extensive output.
        - fixup RA bit in cached replies.
        - fixup CNAME responses from the cache no longer partial response.
+       - error in network send handled without leakage.
+       - enable ip6 from config, and try ip6 addresses if available,
+         if ip6 is not connected, skips to next server.
 
 5 June 2007: Wouter
        - iterator state finished.
index c9aeb125cb7a2066b99a36f8f04656f92533999c..6a0234f48e183cf63cf42ff5b7fea71007056199 100644 (file)
@@ -80,7 +80,7 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg)
                log_err("Could not set root or stub hints");
                return 0;
        }
-       
+       iter_env->supports_ipv6 = cfg->do_ip6;
 
        /* forwarder address */
        if(cfg->fwd_address && cfg->fwd_address[0]) {
@@ -196,7 +196,7 @@ iter_server_selection(struct iter_env* iter_env,
        }
        if(!a)  /* robustness */
                return NULL;
-       /* remove it from list */
+       /* remove it from the delegation point result list */
        if(prev)
                prev->next_result = a->next_result;
        else    dp->result_list = a->next_result;
index 6dcdc0487334151529a3b4ffbe7e79f8fa1440f0..77c603adf0d01537d58d58d0a0befdd4584884f5 100644 (file)
@@ -1083,8 +1083,9 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq,
                qstate->query_flags, 1, &target->addr, target->addrlen, 
                qstate);
        if(!outq) {
-               log_err("out of memory sending query to auth server");
-               return error_response(qstate, id, LDNS_RCODE_SERVFAIL);
+               log_err("error sending query to auth server; skip this address");
+               log_addr("error for address:", &target->addr, target->addrlen);
+               return next_state(qstate, iq, QUERYTARGETS_STATE);
        }
        outbound_list_insert(&iq->outlist, outq);
        iq->num_current_queries++;
index 508ab43fd0100e1f14c8a75dfacb58f42ed50cd1..67c2d294995cedc560c8066a93501f6aa96ef939 100644 (file)
@@ -1138,6 +1138,8 @@ outnet_serviced_query(struct outside_network* outnet,
                }
                /* perform first network action */
                if(!serviced_udp_send(sq, buff)) {
+                       (void)rbtree_delete(outnet->serviced, sq);
+                       free(sq->qbuf);
                        free(sq);
                        free(cb);
                        return NULL;