author | Michael Krelin <hacker@klever.net> | 2007-12-30 19:04:48 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2008-01-04 18:22:27 (UTC) |
commit | 4b75ac58aa9baaf611df8ef694fd585529823c66 (patch) (unidiff) | |
tree | e337b2419bf5825b4b774a4284f7de64e2a179e0 | |
parent | 9020dcc4b8187a9dd31c62dbe89041772b0f5473 (diff) | |
download | libopkele-4b75ac58aa9baaf611df8ef694fd585529823c66.zip libopkele-4b75ac58aa9baaf611df8ef694fd585529823c66.tar.gz libopkele-4b75ac58aa9baaf611df8ef694fd585529823c66.tar.bz2 |
fix to rfc normalization
It kept prepending a '/' to the trailing segment even if the segment was past
[?#]
Signed-off-by: Michael Krelin <hacker@klever.net>
-rw-r--r-- | lib/util.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/util.cc b/lib/util.cc index ee75d29..a9b9bed 100644 --- a/lib/util.cc +++ b/lib/util.cc | |||
@@ -284,32 +284,33 @@ namespace opkele { | |||
284 | psegs.push(rv.length()); | 284 | psegs.push(rv.length()); |
285 | if(c!='/') { | 285 | if(c!='/') { |
286 | pseg += c; | 286 | pseg += c; |
287 | qf = true; | 287 | qf = true; |
288 | } | 288 | } |
289 | rv += '/'; rv += pseg; | 289 | rv += '/'; rv += pseg; |
290 | } | 290 | } |
291 | if(c=='/' && (n>=ul || strchr("?#",uri[n])) ) { | 291 | if(c=='/' && (n>=ul || strchr("?#",uri[n])) ) { |
292 | rv += '/'; | 292 | rv += '/'; |
293 | if(n<ul) | 293 | if(n<ul) |
294 | qf = true; | 294 | qf = true; |
295 | }else if(strchr("?#",c)) { | 295 | }else if(strchr("?#",c)) { |
296 | if(psegs.size()==1 && psegs.top()==rv.length()) | 296 | if(psegs.size()==1 && psegs.top()==rv.length()) |
297 | rv += '/'; | 297 | rv += '/'; |
298 | if(pseg.empty()) | 298 | if(pseg.empty()) |
299 | rv += c; | 299 | rv += c; |
300 | qf = true; | 300 | qf = true; |
301 | } | 301 | } |
302 | pseg.clear(); | 302 | pseg.clear(); |
303 | }else{ | 303 | }else{ |
304 | pseg += c; | 304 | pseg += c; |
305 | } | 305 | } |
306 | } | 306 | } |
307 | if(!pseg.empty()) { | 307 | if(!pseg.empty()) { |
308 | rv += '/'; rv += pseg; | 308 | if(!qf) rv += '/'; |
309 | rv += pseg; | ||
309 | } | 310 | } |
310 | return rv; | 311 | return rv; |
311 | } | 312 | } |
312 | 313 | ||
313 | } | 314 | } |
314 | 315 | ||
315 | } | 316 | } |