]> git.ipfire.org Git - thirdparty/bind9.git/commit
fix EDE 22 time out detection
authorColin Vidal <colin@isc.org>
Thu, 23 Jan 2025 15:38:35 +0000 (16:38 +0100)
committerColin Vidal <colin@isc.org>
Thu, 30 Jan 2025 14:43:25 +0000 (14:43 +0000)
commit3aff00dc7b68076a4065090930a600aae24a97ea
treee218dd367902d1a440ff9ddfb47876a7aa17d45b
parent917181b4e274b5c1898965a5e6cf06058fc459a0
fix EDE 22 time out detection

Extended DNS error 22 (No reachable authority) was previously detected
when `fctx_expired` fired. It turns out this function is used as a
"safety net" and the timeout detection should be caught earlier.

It was working though, because of another issue fixed by !9927. Since
this change, the recursive request timed out detection occurs before
`fctx_expired` so EDE 22 is not added to the response message anymore.

The fix of the problem is to add the EDE 22 code in two situations:

- When the dispatch code timed out (rctx_timedout) the resolver code
  checks various properties to figure out if it needs to make another
  fetch attempt. One of the paramters if the fetch expiration time. If
  it expires, the whole recursion is canceled, so it now adds the EDE 22
  code.

- If the fetch expiration time doesn't expires in the case above (and
  other parameters allows it) a new fetch attempt is made (fctx_query).
  But before the new request is actually made, the fetch expiration time
  is re-checked. It might then has elapsed, and the whole recursion is
  canceled. So it now also adds the EDE 22 code here as well.

(cherry picked from commit 78274ec2b17bb16ee5414aaaf7f91d30ff43daba)
lib/dns/resolver.c