From: Wouter Wijngaards Date: Thu, 7 Jun 2007 15:04:27 +0000 (+0000) Subject: ip6 functionality. X-Git-Tag: release-0.4~90 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e8f7d9c150458a5af03ae8fc4968336aee9d7fc2;p=thirdparty%2Funbound.git ip6 functionality. git-svn-id: file:///svn/unbound/trunk@376 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/doc/Changelog b/doc/Changelog index 3238d43fe..f9a78af93 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -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. diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index c9aeb125c..6a0234f48 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -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; diff --git a/iterator/iterator.c b/iterator/iterator.c index 6dcdc0487..77c603adf 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -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++; diff --git a/services/outside_network.c b/services/outside_network.c index 508ab43fd..67c2d2949 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -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;