]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
Fixup for EDNS probe (neater than patch on mailing list).
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 26 Jun 2009 13:15:06 +0000 (13:15 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 26 Jun 2009 13:15:06 +0000 (13:15 +0000)
git-svn-id: file:///svn/unbound/trunk@1684 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
doc/requirements.txt
services/outside_network.c

index 9e6fd1074ae1c0518f57506bd619250da929c6c1..306129ae66fa7e7da9c0e2ee86394ea18ad44993 100644 (file)
@@ -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
index 165527dae4d4559a3448d276e7abda43acc77a91..ce28fbb331fc7bd5e62d631f47832b68e422c3a4 100644 (file)
@@ -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
index d8033035c2a2ae039ba380b0bd0120e469ee59c6..68b7ca1685a8019c7e30a796bb3e4a7a2344f041 100644 (file)
@@ -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 "