X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine%2FHTTP.pm;h=7f01795717b3b387da66769994acc3c9d50271dc;hb=f54950f51a3f07623b26ddfa20257e70a67bb404;hp=d58e50812fc30dd083433dada551d34cd01c1772;hpb=b0ad47c12a21862b08d8e2942095065ac2f7edf2;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine/HTTP.pm b/lib/Catalyst/Engine/HTTP.pm index d58e508..7f01795 100644 --- a/lib/Catalyst/Engine/HTTP.pm +++ b/lib/Catalyst/Engine/HTTP.pm @@ -12,10 +12,6 @@ use Socket; use IO::Socket::INET (); use IO::Select (); -# For PAR -require Catalyst::Engine::HTTP::Restarter; -require Catalyst::Engine::HTTP::Restarter::Watcher; - use constant CHUNKSIZE => 64 * 1024; use constant DEBUG => $ENV{CATALYST_HTTP_DEBUG} || 0; @@ -158,11 +154,16 @@ around write => sub { # Prepend the headers if they have not yet been sent if ( $self->_has_header_buf ) { - $buffer = $self->_clear_header_buf . $buffer; + $self->_warn_on_write_error( + $self->$orig($c, $self->_clear_header_buf) + ); } - my $ret = $self->$orig($c, $buffer); + $self->_warn_on_write_error($self->$orig($c, $buffer)); +}; +sub _warn_on_write_error { + my ($self, $ret) = @_; if ( !defined $ret ) { $self->_write_error($!); DEBUG && warn "write: Failed to write response ($!)\n"; @@ -170,9 +171,8 @@ around write => sub { else { DEBUG && warn "write: Wrote response ($ret bytes)\n"; } - return $ret; -}; +} =head2 run @@ -339,7 +339,7 @@ sub run { use Config; $ENV{PERL5LIB} .= join $Config{path_sep}, @INC; - exec $^X, $0, @{ $options->{argv} }; + exec $^X, $0, @{ $options->{argv} || [] }; } exit; @@ -364,6 +364,9 @@ sub _handler { while (1) { my ( $path, $query_string ) = split /\?/, $uri, 2; + # URI is not the same as path. Remove scheme, domain name and port from it + $path =~ s{^https?://[^/?#]+}{}; + # Initialize CGI environment local %ENV = ( PATH_INFO => $path || '',