From 20096a3e63c3bcbd47acd848b16bb95b5155df91 Mon Sep 17 00:00:00 2001 From: Daniel Ferstay Date: Mon, 27 Jul 2009 19:42:50 -0700 Subject: [PATCH] [http uri] Trailing slashes in URIs were being discarded. --- libs/http/uri.ml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libs/http/uri.ml b/libs/http/uri.ml index 7092899..881acdb 100644 --- a/libs/http/uri.ml +++ b/libs/http/uri.ml @@ -112,8 +112,9 @@ let pct_decode s = *) let remove_dot_segments path = let slash = Str.regexp "/" in - let has_leading_slash p = - String.length p > 0 && p.[0] = '/' in + let path_len = String.length path in + let has_leading_slash = path_len > 0 && path.[0] = '/' in + let has_trailing_slash = path_len > 0 && path.[path_len - 1] = '/' in let rec remove in_segs out_segs = match in_segs, out_segs with | "." :: in_rest, _ -> @@ -128,7 +129,8 @@ let remove_dot_segments path = List.rev out_segs in let out_segs = remove (Str.split slash path) [] in let out = String.concat "/" out_segs in - if has_leading_slash path then "/" ^ out else out + let out = if has_leading_slash then "/" ^ out else out in + if has_trailing_slash then out ^ "/" else out (* Regular expression for authority = [userinfo "@"] host [":" port] *) let auth_re = "\\(\\([^@]*\\)@\\)?\\([^:]*\\)\\(:\\([0-9]*\\)\\)?" -- 2.39.5