/usr/share/perl5/AnyEvent/HTTPD/HTTPServer.pm is in libanyevent-httpd-perl 0.93-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | package AnyEvent::HTTPD::HTTPServer;
use common::sense;
use Scalar::Util qw/weaken/;
use Object::Event;
use AnyEvent::Handle;
use AnyEvent::Socket;
use AnyEvent::HTTPD::HTTPConnection;
our @ISA = qw/Object::Event/;
=head1 NAME
AnyEvent::HTTPD::HTTPServer - A simple and plain http server
=head1 DESCRIPTION
This class handles incoming TCP connections for HTTP clients.
It's used by L<AnyEvent::HTTPD> to do it's job.
It has no public interface yet.
=head1 COPYRIGHT & LICENSE
Copyright 2008-2011 Robin Redeker, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
=cut
sub new {
my $this = shift;
my $class = ref($this) || $this;
my $self = {
connection_class => "AnyEvent::HTTPD::HTTPConnection",
allowed_methods => [ qw/GET HEAD POST/ ],
@_,
};
bless $self, $class;
my $rself = $self;
weaken $self;
$self->{srv} =
tcp_server $self->{host}, $self->{port}, sub {
my ($fh, $host, $port) = @_;
unless ($fh) {
$self->event (error => "couldn't accept client: $!");
return;
}
$self->accept_connection ($fh, $host, $port);
}, sub {
my ($fh, $host, $port) = @_;
$self->{real_port} = $port;
$self->{real_host} = $host;
return $self->{backlog};
};
return $self
}
sub port { $_[0]->{real_port} }
sub host { $_[0]->{real_host} }
sub allowed_methods { $_[0]->{allowed_methods} }
sub accept_connection {
my ($self, $fh, $h, $p) = @_;
my $htc =
$self->{connection_class}->new (
fh => $fh,
request_timeout => $self->{request_timeout},
allowed_methods => $self->{allowed_methods},
ssl => $self->{ssl},
host => $h,
port => $p);
$self->{handles}->{$htc} = $htc;
weaken $self;
$htc->reg_cb (disconnect => sub {
if (defined $self) {
delete $self->{handles}->{$_[0]};
$self->event (disconnect => $_[0], $_[1]);
}
});
$self->event (connect => $htc);
}
1;
|