fix: treat empty dnsaddr answer as no addresses#3550
Merged
Conversation
@multiformats/dns 1.0.15 throws on an empty answer instead of returning an empty result. Catch that in the dnsaddr resolver so a dnsaddr with no records fails with NoValidAddressesError, while real DNS failures still surface as DNSQueryFailedError.
Member
Author
|
It's probably more helpful to throw the DNS error but this gets everything working with the same behavior as before. We can decide on what error to throw later. |
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.
Description
@multiformats/dns1.0.15 changedquery()to throw an empty-answer error (so it can fall through to other resolvers) instead of returning an empty result. As a side effect, dialing a/dnsaddr/that resolves to no records started rejecting withDNSQueryFailedErrorinstead ofNoValidAddressesError.This catches the empty-answer case in the dnsaddr resolver so those dials fail with
NoValidAddressesErroragain, while genuine DNS failures still surface asDNSQueryFailedError.Notes & open questions
Root cause is multiformats/js-dns#34 (released in
@multiformats/dns1.0.15). No new test needed: the existingconnections.spec.ts"should fail to dial if resolve fails and there are no addresses to dial" test exercises this path (it was failing on 1.0.15, passes with this change).Change checklist