Created by: bjgill
PR checklist
-
Read the contribution guidelines. -
Ran the shell script under ./bin/
to update Petstore sample so that CIs can verify the change. (For instance, only need to run./bin/{LANG}-petstore.sh
and./bin/security/{LANG}-petstore.sh
if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in.\bin\windows\
. -
Filed the PR against the correct branch: master
,4.0.x
. Default:master
. -
Copied the technical committee to review the pull request if your PR is targeting a particular programming language. @frol @farcaller
Description of the PR
This merge request changes the characters that are encoded for object IDs to also include the vertical bar character (|). This is causing an issue with some of our microservices that are sending IDs containing the vertical bar character as part of the URL path to other services, which are responding with a 400 Bad request
. Testing has shown that it is the presence of the unencoded vertical bar character that is causing this error. According to RFC 3986 this is neither unreserved nor sub-delims and so should be encoded.
Tested by building the microservice that was having the issue and capturing the network traffic. The vertical bar characters are now being correctly encoded as %7C
.
There is another encode set called USERINFO_ENCODE_SET
(https://docs.diesel.rs/percent_encoding/struct.USERINFO_ENCODE_SET.html) but this includes a lot of additional characters. It's possible that this set would be suitable in this situation but we were reluctant to change that much in a tool that is widely used in case it adversely impacts other users.
Many thanks to @rwincewicz, the original author of this contribution on whose behalf I am submitting this upstream.