fixed some minor bugs
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Engine / HTTP.pm
index 35c3c44..17187d8 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,26 @@ 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 );
+
         }
 
         $connection->close;