Period (.) is unreserved character, so %2E can be (and maybe should be?) decoded before performing remove_dot_segments, or at least recognized as a period.
$ cargo run --example resolve http://example.com/foo/ '%2E%2E'
Finished dev [unoptimized + debuginfo] target(s) in 0.02s
Running `target/debug/examples/resolve 'http://example.com/foo/' '%2E%2E'`
http://example.com/foo/%2E%2E
$
The expected result in the example above is http://example.com/.
Period (
.
) isunreserved
character, so%2E
can be (and maybe should be?) decoded before performingremove_dot_segments
, or at least recognized as a period.The expected result in the example above is
http://example.com/
.