SecondaryZone: fall back to AXFR when IXFR fails at transport level#1885
Open
Hemsby wants to merge 1 commit intoTechnitiumSoftware:developfrom
Open
SecondaryZone: fall back to AXFR when IXFR fails at transport level#1885Hemsby wants to merge 1 commit intoTechnitiumSoftware:developfrom
Hemsby wants to merge 1 commit intoTechnitiumSoftware:developfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When a secondary zone attempts IXFR, the code already falls back to AXFR if the primary responds with
RCODE=NotImplementedorRCODE=Refused. However, if the request fails at the transport layer (timeout, connection reset, etc.) the exception propagates to the outer catch block and the refresh is abandoned with no AXFR fallback.Scenario where this surfaces:
DNS Server failed to refreshand keeps retrying IXFR, falling further behindFix:
Wrap the two resolve calls in a
try/catch when (doIXFR)inside the loop. If the transport throws while attempting IXFR, fall back to AXFR. If AXFR also fails, the exception propagates normally to the outer catch — no change to existing behaviour, no infinite loop risk.