twitter / finatra

Fast, testable, Scala services built on TwitterServer and Finagle
https://twitter.github.io/finatra/
Apache License 2.0
2.27k stars 405 forks source link

Wrong usage of QueryStringDecoder.decodeComponent in PathPattern #590

Open finalchild opened 8 months ago

finalchild commented 8 months ago

Describe the bug PathPattern calls QueryStringDecoder.decodeComponent, which replaces '+' to ' '.

This behavior is expected in query strings, but not in path strings.

(FYI, QueryStringDecoder.decodeComponent has an overloaded version that allows setting isPath=true, but this is a private method.)

To Reproduce I'm not familiar with finatra, so I don't know what exactly this bug affects, but it seems incoming path decoding would not be working properly.

Expected behavior "as+df" should be decoded to "as+df", not "as df".

Screenshots If applicable, add screenshots to help explain your problem.

Environment For web, specify your OS and browser version. For mobile, specify device, OS and version. For libraries, what version of build tools are you using?

Additional context I ran into this code digging into a similar tapir bug: https://github.com/softwaremill/tapir/issues/3384