]> git.ipfire.org Git - people/ms/dnsmasq.git/commitdiff
Tweak EDNS timeout code.
authorSimon Kelley <simon@thekelleys.org.uk>
Sun, 10 May 2015 12:50:59 +0000 (13:50 +0100)
committerSimon Kelley <simon@thekelleys.org.uk>
Sun, 10 May 2015 13:04:06 +0000 (14:04 +0100)
src/forward.c

index 592243fd4d3542445e2033f25138113ab3025903..74e5ab66c423a9d09f48c9cab7a82f258de3576a 100644 (file)
@@ -799,8 +799,10 @@ void reply_query(int fd, int family, time_t now)
     }
  
   /* We tried resending to this server with a smaller maximum size and got an answer.
-     Make that permanent. */
-  if (server && (forward->flags & FREC_TEST_PKTSZ))
+     Make that permanent. To avoid reduxing the packet size for an single dropped packet,
+     only do this when we get a truncated answer, or one larger than the safe size. */
+  if (server && (forward->flags & FREC_TEST_PKTSZ) && 
+      ((header->hb3 & HB3_TC) || n >= SAFE_PKTSZ))
     server->edns_pktsz = SAFE_PKTSZ;
   
   /* If the answer is an error, keep the forward record in place in case