From: Wouter Wijngaards Date: Fri, 26 Jun 2009 13:15:06 +0000 (+0000) Subject: Fixup for EDNS probe (neater than patch on mailing list). X-Git-Tag: release-1.3.1~23 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ec30ae3ca65bc0aa92580747ee5ac6b8786e7069;p=thirdparty%2Funbound.git Fixup for EDNS probe (neater than patch on mailing list). git-svn-id: file:///svn/unbound/trunk@1684 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/doc/Changelog b/doc/Changelog index 9e6fd1074..306129ae6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +26 June 2009: Wouter + - Fix EDNS fallback when EDNS works for short answers but long answers + are dropped. + 22 June 2009: Wouter - fixup iter priv strict aliasing while preserving size of sockaddr. - iana portlist updated. (one less port allocated, one more fraction diff --git a/doc/requirements.txt b/doc/requirements.txt index 165527dae..ce28fbb33 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -235,6 +235,9 @@ o EDNS fallback. Is done according to the EDNS RFC (and update draft-00). It minimizes the chances of a dropped query making a (DNSSEC) EDNS server falsely EDNS-nonsupporting, and thus DNSSEC-bogus, works well with middleboxes, and can detect the occasional authority that drops EDNS. + For some boxes it is necessary to probe for every failing query, a + reassurance that the DNS server does EDNS does not mean that path can + take large DNS answers. o 0x20 backoff. The draft describes to back off to the next server, and go through all diff --git a/services/outside_network.c b/services/outside_network.c index d8033035c..68b7ca168 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1234,7 +1234,8 @@ serviced_udp_send(struct serviced_query* sq, ldns_buffer* buff) &edns_lame_known, &rtt)) return 0; if(sq->status == serviced_initial) { - if(edns_lame_known == 0 && rtt > 5000) { + if((vs != -1 || edns_lame_known == 0) && + rtt > 5000 && rtt < 10001) { /* perform EDNS lame probe - check if server is * EDNS lame (EDNS queries to it are dropped) */ verbose(VERB_ALGO, "serviced query: send probe to see "