X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine%2FHTTP.pm;h=6df53450c15f60ed89ed346608432fd6c3be66a1;hb=db9db4076abc290049cd3cc41979a55867239388;hp=b320a3d98fec700963ea84e8831652184b533774;hpb=333123efb5f595897f6b209de49b56e6587988c9;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine/HTTP.pm b/lib/Catalyst/Engine/HTTP.pm index b320a3d..6df5345 100644 --- a/lib/Catalyst/Engine/HTTP.pm +++ b/lib/Catalyst/Engine/HTTP.pm @@ -244,6 +244,12 @@ sub run { # Ignore broken pipes as an HTTP server should local $SIG{PIPE} = 'IGNORE'; + # Restart on HUP + local $SIG{HUP} = sub { + $restart = 1; + warn "Restarting server on SIGHUP...\n"; + }; + LISTEN: while ( !$restart ) { while ( accept( Remote, $daemon ) ) { @@ -340,8 +346,18 @@ sub _handler { $sel->add( \*STDIN ); REQUEST: - while (1) { - my ( $path, $query_string ) = split /\?/, $uri, 2; + # Initialize CGI environment + local %ENV = ( + PATH_INFO => $path || '', + QUERY_STRING => $query_string || '', + REMOTE_ADDR => $sockdata->{peeraddr}, + REMOTE_HOST => $sockdata->{peername}, + REQUEST_METHOD => $method || '', + SERVER_NAME => $sockdata->{localname}, + SERVER_PORT => $port, + SERVER_PROTOCOL => "HTTP/$protocol", + %copy_of_env, + ); # Initialize CGI environment local %ENV = (