X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine%2FHTTP.pm;h=30ddbc4a8adfae1d420881d0f4cb906be6e4f14e;hb=13e46699880fb7b5a880a1b5aad48162f3f11e0e;hp=62c5d0b4e8633dbc85aff374eac8bd0e9b08f686;hpb=880e94445a96cf2e346893336160db0a31873bea;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine/HTTP.pm b/lib/Catalyst/Engine/HTTP.pm index 62c5d0b..30ddbc4 100644 --- a/lib/Catalyst/Engine/HTTP.pm +++ b/lib/Catalyst/Engine/HTTP.pm @@ -339,7 +339,7 @@ sub run { use Config; $ENV{PERL5LIB} .= join $Config{path_sep}, @INC; - exec $^X, $0, @{ $options->{argv} }; + exec $^X, $0, @{ $options->{argv} || [] }; } exit; @@ -534,13 +534,21 @@ sub _socket_data { peeraddr => $iaddr ? ( inet_ntoa($iaddr) || '127.0.0.1' ) : '127.0.0.1', - localname => gethostbyaddr( $localiaddr, AF_INET ) || 'localhost', + localname => _gethostbyaddr( $localiaddr ), localaddr => inet_ntoa($localiaddr) || '127.0.0.1', }; return $data; } +{ # If you have a crappy DNS server then these can be slow, so cache 'em + my %hostname_cache; + sub _gethostbyaddr { + my $ip = shift; + $hostname_cache{$ip} ||= gethostbyaddr( $ip, AF_INET ) || 'localhost'; + } +} + sub _inet_addr { unpack "N*", inet_aton( $_[0] ) } =head2 options