Any-Daemon-HTTP
view release on metacpan or search on metacpan
lib/Any/Daemon/HTTP.pm view on Meta::CPAN
return ($listen, $listen->sockhost.':'.$listen->sockport)
if blessed $listen && $listen->isa('IO::Socket');
my $port = $listen =~ s/\:([0-9]+)$// ? $1 : PORT_HTTP;
my $host = $listen;
my $proto = $self->{ADH_protocol}
= $args{protocol} || ($port==PORT_HTTPS ? 'HTTPS' : 'HTTP');
my $sock_class;
if($proto eq 'HTTPS')
{ $sock_class = 'IO::Socket::SSL';
eval "require IO::Socket::SSL; require HTTP::Daemon::SSL" or panic $@;
}
elsif($proto eq 'HTTP')
{ $sock_class = 'IO::Socket::IP';
}
elsif($proto eq 'FCGI')
{ $sock_class = 'IO::Socket::IP';
eval "require Any::Daemon::FCGI" or panic $@;
}
else
{ error __x"Unsupported protocol '{proto}'", proto => $proto;
lib/Any/Daemon/HTTP.pm view on Meta::CPAN
my $deadline = $start + ($args->{max_time_per_conn} ||= 120);
my $bonus = $args->{req_time_bonus} //= 2;
my $conn;
if($self->protocol eq 'FCGI')
{ $args->{socket} = $client;
$conn = Any::Daemon::FCGI::ClientConn->new($args);
}
else
{ # Ugly hack, steal HTTP::Daemon's HTTP/1.1 implementation
$conn = bless $client, $client->isa('IO::Socket::SSL')
? 'HTTP::Daemon::ClientConn::SSL'
: 'HTTP::Daemon::ClientConn';
${*$conn}{httpd_daemon} = $self;
}
my $ip = $client->peerhost;
my $host =
( $client->sockdomain == PF_INET
? gethostbyaddr inet_aton($ip), AF_INET
( run in 0.477 second using v1.01-cache-2.11-cpan-4d50c553e7e )