From 86fa1046920dedc8134136a6244ca96e8a37e9d8 Mon Sep 17 00:00:00 2001 From: Simon Kelley Date: Sun, 10 May 2015 13:50:59 +0100 Subject: [PATCH] Tweak EDNS timeout code. --- src/forward.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/forward.c b/src/forward.c index 592243f..74e5ab6 100644 --- a/src/forward.c +++ b/src/forward.c @@ -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 -- 2.39.2