X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FEngine.pm;h=edef4174020663ddcb5d4d275c1b61758eb691ce;hp=52c38cb6ecbb0bb263d25dc4c4464e2b851194fd;hb=000641983bc2af88ef662606c75535dde8381051;hpb=acbecf084395e9b46e607a3fe244faa3c1bd3abb diff --git a/lib/Catalyst/Engine.pm b/lib/Catalyst/Engine.pm index 52c38cb..edef417 100644 --- a/lib/Catalyst/Engine.pm +++ b/lib/Catalyst/Engine.pm @@ -12,9 +12,7 @@ use HTTP::Headers; use URI::QueryParam; use Moose::Util::TypeConstraints; use Plack::Loader; -use Plack::Middleware::Conditional; -use Plack::Middleware::ReverseProxy; -use Catalyst::Engine::Loader; +use Catalyst::EngineLoader; use Encode (); use utf8; @@ -791,14 +789,19 @@ sub run { # FIXME - we should stash the options in an attribute so that custom args # like Gitalist's --git_dir are possible to get from the app without stupid tricks. - my $server = pop @args if blessed $args[-1]; - my $options = pop @args if ref($args[-1]) eq 'HASH'; + my $server = pop @args if (scalar @args && blessed $args[-1]); + my $options = pop @args if (scalar @args && ref($args[-1]) eq 'HASH'); + # Back compat hack for applications with old (non Catalyst::Script) scripts to work in FCGI. + if (scalar @args && !ref($args[0])) { + if (my $listen = shift @args) { + $options->{listen} ||= [$listen]; + } + } if (! $server ) { - $server = Catalyst::Engine::Loader->auto(); # We're not being called from a script, - # so auto detect what backend to run on. - # This should never happen, as mod_perl - # never calls ->run, instead the $app->handle - # method is called per request. + $server = Catalyst::EngineLoader->new(application_name => ref($self))->auto(%$options); + # We're not being called from a script, so auto detect what backend to + # run on. This should never happen, as mod_perl never calls ->run, + # instead the $app->handle method is called per request. $app->log->warn("Not supplied a Plack engine, falling back to engine auto-loader (are your scripts ancient?)") } $server->run($psgi, $options); @@ -839,7 +842,7 @@ sub write { $self->_prepared_write(1); } - return 0 if !defined $buffer; + $buffer = q[] unless defined $buffer; my $len = length($buffer); $self->_writer->write($buffer); @@ -876,7 +879,7 @@ not directly available via Catalyst objects $c->request, $c->engine ... BEWARE: If you really need to access some environment variable from your Catalyst application you should use $c->engine->env->{VARNAME} instead of $ENV{VARNAME}, -as in some enviroments the %ENV hash does not contain what you would expect. +as in some environments the %ENV hash does not contain what you would expect. =head1 AUTHORS