[release/1.7] Support encoded characters in hosts table key #10072
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.
Fixes #10055
Allows escaping invalid table keys, for example the braces required to specify an IPv6 literal URL:
This is about the most minimal fix I can come up with. Other options would probably require adding a new field to override the hostname, similar to OverridePath but for the hostname. go-toml is super helpful and does not expose any functions for decoding core types, so we use the json decoder for that since it also supports toml's
\uXXXX
format.Honestly this datastructure should have been a table list with a
server
field for each entry, rather than trying to get clever and put the server URL in the table key. Using a list would have also avoided all the weirdness with having to re-parse the tree to get the key order from line numbers in the file.