This PR implements TCP lookups for the internal DNS client used to derive names for clients and upstream servers. The reason for adding this was #1975 during which we have found that existing UDP lookups may fail silently because of UDP packet fragmentation/truncation. Using TCP avoids this issue altogether. It can reliably be triggered in development-v6 when setting 8.8.8.8 as upstream server and enabling DNSSEC validation.
While discussing #1975, we found another glitch that causes names of upstream servers to never be resolved when starting with no/an empty database. Only after the first restart of FTL after database initialization, upstream server names are resolved. This is fixed now as well.
Related issue or feature (if applicable): #1975
Pull request in docs with documentation (if applicable): N/A
By submitting this pull request, I confirm the following:
I have read and understood the contributors guide, as well as this entire template. I understand which branch to base my commits and Pull Requests against.
I have commented my proposed changes within the code.
I am willing to help maintain this change if there are issues with it later.
What does this implement/fix?
This PR implements TCP lookups for the internal DNS client used to derive names for clients and upstream servers. The reason for adding this was #1975 during which we have found that existing UDP lookups may fail silently because of UDP packet fragmentation/truncation. Using TCP avoids this issue altogether. It can reliably be triggered in
development-v6
when setting8.8.8.8
as upstream server and enabling DNSSEC validation.While discussing #1975, we found another glitch that causes names of upstream servers to never be resolved when starting with no/an empty database. Only after the first restart of FTL after database initialization, upstream server names are resolved. This is fixed now as well.
Related issue or feature (if applicable): #1975
Pull request in docs with documentation (if applicable): N/A
By submitting this pull request, I confirm the following:
git rebase
)Checklist:
developmental
branch.