You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ja...@apache.org on 2011/07/04 16:35:13 UTC
svn commit: r1142689 - in /couchdb/branches/1.1.x:
src/couchdb/couch_httpd_vhost.erl test/etap/160-vhosts.t
Author: jan
Date: Mon Jul 4 14:35:13 2011
New Revision: 1142689
URL: http://svn.apache.org/viewvc?rev=1142689&view=rev
Log:
Backport r1142685 from trunk: Allow "/" as vhost target.
Includes a one-line whitespace fix.
Modified:
couchdb/branches/1.1.x/src/couchdb/couch_httpd_vhost.erl
couchdb/branches/1.1.x/test/etap/160-vhosts.t
Modified: couchdb/branches/1.1.x/src/couchdb/couch_httpd_vhost.erl
URL: http://svn.apache.org/viewvc/couchdb/branches/1.1.x/src/couchdb/couch_httpd_vhost.erl?rev=1142689&r1=1142688&r2=1142689&view=diff
==============================================================================
--- couchdb/branches/1.1.x/src/couchdb/couch_httpd_vhost.erl (original)
+++ couchdb/branches/1.1.x/src/couchdb/couch_httpd_vhost.erl Mon Jul 4 14:35:13 2011
@@ -216,15 +216,19 @@ code_change(_OldVsn, State, _Extra) ->
{ok, State}.
+append_path("/"=_Target, "/"=_Path) ->
+ "/";
+append_path(Target, Path) ->
+ Target ++ Path.
% default redirect vhost handler
redirect_to_vhost(MochiReq, VhostTarget) ->
Path = MochiReq:get(raw_path),
- Target = VhostTarget ++ Path,
+ Target = append_path(VhostTarget, Path),
?LOG_DEBUG("Vhost Target: '~p'~n", [Target]),
-
+
Headers = mochiweb_headers:enter("x-couchdb-vhost-path", Path,
MochiReq:get(headers)),
Modified: couchdb/branches/1.1.x/test/etap/160-vhosts.t
URL: http://svn.apache.org/viewvc/couchdb/branches/1.1.x/test/etap/160-vhosts.t?rev=1142689&r1=1142688&r2=1142689&view=diff
==============================================================================
--- couchdb/branches/1.1.x/test/etap/160-vhosts.t (original)
+++ couchdb/branches/1.1.x/test/etap/160-vhosts.t Mon Jul 4 14:35:13 2011
@@ -52,7 +52,7 @@ admin_user_ctx() -> {user_ctx, #user_ctx
main(_) ->
test_util:init_code_path(),
- etap:plan(14),
+ etap:plan(15),
case (catch test()) of
ok ->
etap:end_tests();
@@ -115,6 +115,7 @@ test() ->
ok = couch_config:set("vhosts", "*.example2.com/test", "/*", false),
ok = couch_config:set("vhosts", "*/test1",
"/etap-test-db/_design/doc1/_show/test", false),
+ ok = couch_config:set("vhosts", "example3.com", "/", false),
% let couch_httpd restart
timer:sleep(100),
@@ -133,6 +134,7 @@ test() ->
test_vhost_request_path1(),
test_vhost_request_path2(),
test_vhost_request_path3(),
+ test_vhost_request_to_root(),
%% restart boilerplate
couch_db:close(Db),
@@ -289,3 +291,13 @@ test_vhost_request_path3() ->
end, true, <<"path in req ok">>);
_Else -> etap:is(false, true, <<"ibrowse fail">>)
end.
+
+test_vhost_request_to_root() ->
+ Uri = server(),
+ case ibrowse:send_req(Uri, [], get, [], []) of
+ {ok, _, _, Body} ->
+ {JsonBody} = couch_util:json_decode(Body),
+ HasCouchDBWelcome = proplists:is_defined(<<"couchdb">>, JsonBody),
+ etap:is(HasCouchDBWelcome, true, "should allow redirect to /");
+ _Else -> etap:is(false, true, <<"ibrowse fail">>)
+ end.