From: Tomas Doran Date: Tue, 29 Mar 2011 15:05:02 +0000 (+0100) Subject: Use the Plack LighttpdScriptNameFix middleware. X-Git-Tag: 5.89003~48 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=d36708268b46edefbe9ef44fda51b1ffce8e05a4 Use the Plack LighttpdScriptNameFix middleware. This replaces our home-baked solution with something which works better and in more cases --- diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 2f49384..d093e23 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -36,6 +36,7 @@ use Try::Tiny; use Plack::Middleware::Conditional; use Plack::Middleware::ReverseProxy; use Plack::Middleware::IIS6ScriptNameFix; +use Plack::Middleware::LighttpdScriptNameFix; BEGIN { require 5.008004; } @@ -2697,23 +2698,7 @@ sub _wrapped_legacy_psgi_app { # If we're running under Lighttpd, swap PATH_INFO and SCRIPT_NAME # http://lists.scsys.co.uk/pipermail/catalyst/2006-June/008361.html - # Thanks to Mark Blythe for this fix - # - # Note that this has probably the same effect as - # Plack::Middleware::LighttpdScriptNameFix and we should switch to that if - # we can. - $psgi_app = Plack::Middleware::Conditional->wrap( - $psgi_app, - condition => $server_matches->(qr/lighttpd/), - builder => sub { - my ($to_wrap) = @_; - return sub { - my ($env) = @_; - $env->{PATH_INFO} ||= delete $env->{SCRIPT_NAME}; - return $to_wrap->($env); - }; - }, - ); + $psgi_app = Plack::Middleware::LighttpdScriptNameFix->wrap($psgi_app); $psgi_app = Plack::Middleware::Conditional->wrap( $psgi_app, diff --git a/t/aggregate/unit_core_engine_fixenv-lighttpd.t b/t/aggregate/unit_core_engine_fixenv-lighttpd.t index eeb0ca0..190e064 100644 --- a/t/aggregate/unit_core_engine_fixenv-lighttpd.t +++ b/t/aggregate/unit_core_engine_fixenv-lighttpd.t @@ -51,6 +51,7 @@ sub fix_env { my %fixed_env = fix_env(%env); is($fixed_env{PATH_INFO}, '/bar', 'check PATH_INFO'); -ok(!exists($fixed_env{SCRIPT_NAME}), 'check SCRIPT_NAME'); +ok((!exists($fixed_env{SCRIPT_NAME}) || !length($fixed_env{SCRIPT_NAME}), + 'check SCRIPT_NAME'); done_testing;