dnsserver.Server: Export timeout values #7497
Merged
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.
1. Why is this pull request needed and what does it do?
Before
dnsserver.Serverstartsdns.Server(that actually serves TCP connections) it considers all server blocks in Corefile that apply to a given listening endpoint before picking the final timeout values (only one value gets applied, all other are silently disregarded). Unfortunately this happens after plugins are set up.I'm currently working on a plugin that implements RFC 8490. This protocol allows to communicate to the client that it needs to send KeepAlive messages to maintain the TCP connection. Since dns.Server will terminate an idle tcp connection, I need to communicate a value that's sufficient to prevent that. Therefore inside plugin's ServeDNS I need to be able to access actual IdleTimeout used by dnsserver.Server (and, by extension, dns.Server).
2. Which issues (if any) are related?
None
3. Which documentation changes (if any) need to be made?
None
4. Does this introduce a backward incompatible change or deprecation?
No