C::E::HTTP fallback to $base->host for old clients. Add Date to C::E::Test response.
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Engine / HTTP.pm
index 35c3c44..b0f10d9 100644 (file)
@@ -3,7 +3,7 @@ package Catalyst::Engine::HTTP;
 use strict;
 use base 'Catalyst::Engine::Test';
 
-use IO::Socket qw(AF_INET SOCK_STREAM SOMAXCONN);
+use IO::Socket qw(AF_INET INADDR_ANY SOCK_STREAM SOMAXCONN);
 
 =head1 NAME
 
@@ -47,7 +47,6 @@ sub run {
         Listen    => SOMAXCONN,
         LocalPort => $port,
         ReuseAddr => 1,
-        Timeout   => .1,
         Type      => SOCK_STREAM,
     );
 
@@ -59,24 +58,30 @@ sub run {
 
     printf( "You can connect to your server at %s\n", $base );
 
-    while ( 1 ) {
+    while ( my $connection = $daemon->accept ) {
 
-        my $connection = $daemon->accept or next;
+        $connection->timeout(5);
 
         while ( my $request = $connection->get_request ) {
 
             $request->uri->scheme('http');    # Force URI::http
-            $request->uri->host( $base->host );
+            $request->uri->host( $request->header('Host') || $base->host );
             $request->uri->port( $base->port );
 
             my $lwp = Catalyst::Engine::Test::LWP->new(
-                request  => $request,
                 address  => $connection->peerhost,
-                hostname => gethostbyaddr( $connection->peeraddr, AF_INET )
+                hostname => gethostbyaddr( $connection->peeraddr, AF_INET ),
+                request  => $request,
+                response => HTTP::Response->new
             );
 
             $class->handler($lwp);
             $connection->send_response( $lwp->response );
+
+            if ( $class->debug ) {
+                $class->log->info( sprintf( "Peer %s:%d",$connection->peerhost, $connection->peerport ) );
+            }
+
         }
 
         $connection->close;