diff options
author | Jan Lehnardt <jan@apache.org> | 2010-11-16 10:55:25 +0000 |
---|---|---|
committer | Jan Lehnardt <jan@apache.org> | 2010-11-16 10:55:25 +0000 |
commit | 424569de13938b7de8b9722fc304fb7744466de3 (patch) | |
tree | 40d8d5cc20a2782dc2c0c6d5226983b546344d0d /src | |
parent | 118b8906ba8199471265398f11296d756d62d992 (diff) |
After authentication, redirect to the path the user requested, not
the one that is used internally.
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@1035581 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r-- | src/couchdb/couch_httpd.erl | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/couchdb/couch_httpd.erl b/src/couchdb/couch_httpd.erl index dea41eeb..4bce7e02 100644 --- a/src/couchdb/couch_httpd.erl +++ b/src/couchdb/couch_httpd.erl @@ -773,7 +773,13 @@ error_headers(#httpd{mochi_req=MochiReq}=Req, Code, ErrorStr, ReasonStr) -> {Code, []}; match -> AuthRedirectBin = ?l2b(AuthRedirect), - UrlReturn = ?l2b(couch_util:url_encode(MochiReq:get(path))), + % Redirect to the path the user requested, not + % the one that is used internally. + UrlReturnRaw = case MochiReq:get_header_value("x-couchdb-vhost-path") of + undefined -> MochiReq:get(path); + VHostPath -> VHostPath + end, + UrlReturn = ?l2b(couch_util:url_encode(UrlReturnRaw)), UrlReason = ?l2b(couch_util:url_encode(ReasonStr)), {302, [{"Location", couch_httpd:absolute_uri(Req, <<AuthRedirectBin/binary,"?return=",UrlReturn/binary,"&reason=",UrlReason/binary>>)}]} end |