about summary refs log tree commit homepage
path: root/lib/PublicInbox/HTTP.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2022-08-01 21:24:42 +0000
committerEric Wong <e@80x24.org>2022-08-02 19:20:10 +0000
commita55a38db0276a8ce1a09392573af6e1305cbaba9 (patch)
tree24cbfa60cc599b8b5b9f2067a61d497c6b2d0d9a /lib/PublicInbox/HTTP.pm
parent37939c45e9eee222dd8ec35c941271b87bd02885 (diff)
downloadpublic-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.pm10
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]) });