r9568@zaphod (orig r6091): ash | 2007-02-22 04:43:57 +1100
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Engine / HTTP.pm
index b320a3d..6df5345 100644 (file)
@@ -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 = (