summaryrefslogtreecommitdiffabout
path: root/lib/util.cc
authorMichael Krelin <hacker@klever.net>2007-12-30 19:04:48 (UTC)
committer Michael Krelin <hacker@klever.net>2008-01-04 18:22:27 (UTC)
commit4b75ac58aa9baaf611df8ef694fd585529823c66 (patch) (side-by-side diff)
treee337b2419bf5825b4b774a4284f7de64e2a179e0 /lib/util.cc
parent9020dcc4b8187a9dd31c62dbe89041772b0f5473 (diff)
downloadlibopkele-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>
Diffstat (limited to 'lib/util.cc') (more/less context) (ignore whitespace changes)
-rw-r--r--lib/util.cc3
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 {
psegs.push(rv.length());
if(c!='/') {
pseg += c;
qf = true;
}
rv += '/'; rv += pseg;
}
if(c=='/' && (n>=ul || strchr("?#",uri[n])) ) {
rv += '/';
if(n<ul)
qf = true;
}else if(strchr("?#",c)) {
if(psegs.size()==1 && psegs.top()==rv.length())
rv += '/';
if(pseg.empty())
rv += c;
qf = true;
}
pseg.clear();
}else{
pseg += c;
}
}
if(!pseg.empty()) {
- rv += '/'; rv += pseg;
+ if(!qf) rv += '/';
+ rv += pseg;
}
return rv;
}
}
}