Fix http host/origin allowlist never matching configured values#813
Merged
evoskuil merged 1 commit intoMay 21, 2026
Merged
Conversation
is_allowed_host/is_allowed_origin compared the request host (normalized via to_normal_host, which substitutes default_port when the port is zero) against the raw configured endpoints in options_.hosts/origins, which are not normalized. A configured value without an explicit port (e.g. host = localhost) therefore never matched any request — not even an identical Host header — because the request side carried default_port (80/443) while the configured side carried port 0. Compare against host_names()/origin_names() instead, which apply the same to_lower(default_port) normalization to the configured values, so both sides are symmetric. Verified on a live node: with host = localhost configured, Host: localhost is now accepted (was rejected), while non-listed hosts are still rejected.
Member
|
This is at least the third time we have hit a namespace conflict due to xcode polluting the global namespace with a common word. Workaround: a812ef2 |
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.
is_allowed_host/is_allowed_origin compared the request host (normalized via to_normal_host, which substitutes default_port when the port is zero) against the raw configured endpoints in options_.hosts/origins, which are not normalized. A configured value without an explicit port (e.g. host = localhost) therefore never matched any request because the request side carried default_port (80/443) while the configured side carried port 0.
Compare against host_names()/origin_names() instead, which apply the same to_lower(default_port) normalization to the configured values, so both sides are symmetric.
Verified on a node: with host = localhost configured, Host: localhost is now accepted (was rejected), while non-listed hosts are still rejected.