diff options
author | Eric Wong <e@80x24.org> | 2022-08-01 21:24:42 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2022-08-02 19:20:10 +0000 |
commit | a55a38db0276a8ce1a09392573af6e1305cbaba9 (patch) | |
tree | 24cbfa60cc599b8b5b9f2067a61d497c6b2d0d9a /lib/PublicInbox/HTTP.pm | |
parent | 37939c45e9eee222dd8ec35c941271b87bd02885 (diff) | |
download | public-inbox-a55a38db0276a8ce1a09392573af6e1305cbaba9.tar.gz |
This brings the HTTP server closer to the IMAP/NNTP/POP3 implementations and eliminates package-wide globals in PublicInbox::HTTPD. The end goal is to be able to host completely different PSGI applications on different listen ports.
Diffstat (limited to 'lib/PublicInbox/HTTP.pm')
-rw-r--r-- | lib/PublicInbox/HTTP.pm | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/PublicInbox/HTTP.pm b/lib/PublicInbox/HTTP.pm index 76e978a2..669211e3 100644 --- a/lib/PublicInbox/HTTP.pm +++ b/lib/PublicInbox/HTTP.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2016-2021 all contributors <meta@public-inbox.org> +# Copyright (C) all contributors <meta@public-inbox.org> # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt> # # Generic PSGI server for convenience. It aims to provide @@ -52,8 +52,8 @@ sub http_date () { } sub new ($$$) { - my ($class, $sock, $addr, $httpd) = @_; - my $self = bless { httpd => $httpd }, $class; + my ($class, $sock, $addr, $srv_env) = @_; + my $self = bless { srv_env => $srv_env }, $class; my $ev = EPOLLIN; my $wbuf; if ($sock->can('accept_SSL') && !$sock->accept_SSL) { @@ -78,7 +78,7 @@ sub event_step { # called by PublicInbox::DS return read_input($self) if ref($self->{env}); my $rbuf = $self->{rbuf} // (\(my $x = '')); - my %env = %{$self->{httpd}->{env}}; # full hash copy + my %env = %{$self->{srv_env}}; # full hash copy my $r; while (($r = parse_http_request($$rbuf, \%env)) < 0) { # We do not support Trailers in chunked requests, for @@ -145,7 +145,7 @@ sub app_dispatch { # note: NOT $self->{sock}, we want our close (+ PublicInbox::DS::close), # to do proper cleanup: $env->{'psgix.io'} = $self; # for ->close or async_pass - my $res = Plack::Util::run_app($self->{httpd}->{app}, $env); + my $res = Plack::Util::run_app($env->{'pi-httpd.app'}, $env); eval { if (ref($res) eq 'CODE') { $res->(sub { response_write($self, $env, $_[0]) }); |