gateway: fix further resolution of dnslink failures #5199
Closed
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.
A while ago, we noticed that if IpnsHostname failed to look up
a dnslink for a hostname in a Host header, it wouldn't respond
with an error, but instead just skip the Host header part and
carry on.
In the issue were this was flagged, the example was:
_dnslink.tr.wikipedia-on-ipfs.org => /ipns/QmSomeKey
This key had stopped to resolve, and thus the resolution of
/ipns/tr.wikipedia-on-ipfs.org would fail. Now you'd expect
an error response, but instead it'd happily continue processing
the request, disregarding the Host header, and allowing requests
to e.g. http://tr.wikipedia-on-ipfs.org/ipns/libp2p.io to succeed.
A previous patch (#4977) tried to work around this
issue by limiting the recursion depth of Host: header dnslink
resolutions to 1.
In this patch we start to correctly handle the initial resolution
error and stop processing the request, and we remove the earlier
workaround.
License: MIT
Signed-off-by: Lars Gierth [email protected]