Fixed: don't autmoatically resolve hostnames
Christian Hansen [Tue, 24 May 2005 18:29:14 +0000 (18:29 +0000)]
lib/Catalyst/Engine.pm
lib/Catalyst/Engine/HTTP/Daemon.pm
lib/Catalyst/Request.pm

index 32a03d8..fd510b3 100644 (file)
@@ -467,10 +467,9 @@ sub prepare {
 
     my $method   = $c->req->method   || '';
     my $path     = $c->req->path     || '';
-    my $hostname = $c->req->hostname || '';
     my $address  = $c->req->address  || '';
 
-    $c->log->debug(qq/"$method" request for "$path" from $hostname($address)/)
+    $c->log->debug(qq/"$method" request for "$path" from $address/)
       if $c->debug;
 
     if ( $c->request->method eq 'POST' and $c->request->content_length ) {
index dba9ea1..92faf42 100644 (file)
@@ -3,7 +3,7 @@ package Catalyst::Engine::HTTP::Daemon;
 use strict;
 use base 'Catalyst::Engine::HTTP::Base';
 
-use IO::Socket qw(AF_INET INADDR_ANY SOCK_STREAM SOMAXCONN );
+use IO::Socket qw( SOCK_STREAM SOMAXCONN );
 
 =head1 NAME
 
@@ -48,11 +48,8 @@ sub handler {
         $request->uri->host( $request->header('Host') || $client->sockhost );
         $request->uri->port( $client->sockport );
 
-        my $hostname = gethostbyaddr( $client->peeraddr, AF_INET );
-
         my $http = Catalyst::Engine::HTTP::Base::struct->new(
             address  => $client->peerhost,
-            hostname => $hostname || $client->peerhost,
             request  => $request,
             response => HTTP::Response->new
         );
@@ -84,6 +81,10 @@ sub run {
         ReuseAddr => 1,
         Type      => SOCK_STREAM,
     );
+    
+    unless ( defined $daemon ) {
+        die( qq/Failed to create daemon. Reason: '$!'/ );
+    }
 
     my $base = URI->new( $daemon->url )->canonical;
 
index 41f8d8d..dd1f312 100644 (file)
@@ -3,9 +3,11 @@ package Catalyst::Request;
 use strict;
 use base 'Class::Accessor::Fast';
 
+use IO::Socket qw[AF_INET inet_aton];
+
 __PACKAGE__->mk_accessors(
-    qw/action address arguments body base cookies headers hostname match
-      method parameters path protocol secure snippets uploads user/
+    qw/action address arguments body base cookies headers match method 
+       parameters path protocol secure snippets uploads user/
 );
 
 *args   = \&arguments;
@@ -133,9 +135,25 @@ Returns an L<HTTP::Headers> object containing the headers.
 
 =item $req->hostname
 
-Contains the hostname of the remote user.
+Lookup the current users DNS hostname.
 
     print $c->request->hostname
+    
+=cut
+
+sub hostname {
+    my $self = shift;
+
+    if ( @_ ) {
+        $self->{hostname} = shift;
+    }
+
+    unless ( $self->{hostname} ) {
+         $self->{hostname} = gethostbyaddr( inet_aton( $self->address ), AF_INET );
+    }
+
+    return $self->{hostname};
+}
 
 =item $req->input