-
Notifications
You must be signed in to change notification settings - Fork 277
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
megasplat inconsistent with multiple slashes (//
) in (or ending) path
#1155
Labels
Comments
veryrusty
added a commit
that referenced
this issue
Apr 13, 2016
The string that a megasplat matched is split on '/'. Without setting an LIMIT for the split, empty trailing values get stripped. That is; for the route '/foo/**', the paths '/foo/bar' and '/foo/bar/' were both giving the splat as [ 'bar' ]. Or, if there were further trailing slashes in the path: '/foo/bar///a' gave ['bar','','','a'] but '/foo/bar///' gave ['bar']. How's that for inconsistent. Instead, this commit adds a (negative) limit to the split on megasplat values so that empty trailing values are kept, which allows you to join the arrayref of values together and get the original path again. The above examples are: '/foo/bar/' giving ['bar',''] '/foo/bar///a' giving ['bar','','','a'] #as before '/foo/bar///' giving ['bar','',''] This is a subtle change in behaviour, which _may_ cause some Dancers issues if they are not aware of the change. Closes #1155.
xsawyerx
added a commit
that referenced
this issue
Apr 19, 2016
[ BUG FIXES ] * GH #1102: Handle multiple '..' in file path utilities. (Oleg A. Mamontov, Peter Mottram) * GH #1114: Fix missing prereqs as reported by CPANTS. (Mohammad S Anwar) * GH #1128: Shh warning if optional megasplat is not present. (David Precious) * GH #1139: Fix incorrect Content-Length header added by AutoPage handler (Michael Kröll, Russell Jenkins) * GH #1144: Change tt tags to span in skel (Jason Lewis) * GH #1046: "no_server_tokens" configuration option doesn't work. (Sawyer X) # GH #1155, #1157: Fix megasplat value splitting when there are empty trailing path segments. (Tatsuhiko Miyagawa, Russell Jenkins) NOTE: Paths matching a megasplat that end with a '/' will now include an empty string as the last value. For the route pattern '/foo/**', the path '/foo/bar', the megasplat gives ['bar'], whereas '/foo/bar/' now gives ['bar','']. Joining the array of megasplat values will now always be the string matched against for the megasplit. [ DOCUMENTATION ] * GH #1119: Improve the deployment documentation. (Andrew Beverley) * GH #1123: Document import of utf8 pragma. (Victor Adam) * GH #1132: Fix spelling mistakes in POD (Gregor Herrmann) * GH #1134: Fix spelling errors detected by codespell (James McCoy) * GH #1153: Fix POD rendering error. (Sawyer X) [ ENHANCEMENTS ] * GH #1129: engine.logger.* hooks are called around logging a message. (Russell @veryrusty Jenkins) * GH #1146: Cleaner display of error context (Vernon Lyon) * GH #1085: Add consistent keywords for accessing headers; 'request_header' for request, 'response_header', 'response_headers' and 'push_response_header' for response. (Russell @veryrusty Jenkins)
# for free
to join this conversation on GitHub.
Already have an account?
# to comment
Noted by @miyagawa on IRC; routes with megasplat's have inconsistent handling when multiple slashes are in the path:
For the route
get '/foo/**' => sub {...}
,The request
GET /foo/bar///a
gives[ 'bar', '', '', 'a' ]
as the megasplat values.However
GET /foo/bar///
gives[ 'bar' ]
. This should probably be[ 'bar', '', '', '' ]
.One fix is to add the third param (of -1) to this split
The text was updated successfully, but these errors were encountered: