-# Copyright (C) 2016 all contributors <meta@public-inbox.org>
+# Copyright (C) 2016-2018 all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
# when no endpoints match, fallback to this and serve a static file
};
my $res;
my $async = $env->{'pi-httpd.async'}; # XXX unstable API
- my $io = $env->{'psgix.io'};
my $cb = sub {
my $r = $rd_hdr->() or return;
$rd_hdr = undef;
$rpipe->close;
$end->();
}
- return $res->($r);
- }
- if ($async) {
+ $res->($r);
+ } elsif ($async) {
$fh = $res->($r);
- return $async->async_pass($io, $fh, \$buf);
+ $async->async_pass($env->{'psgix.io'}, $fh, \$buf);
+ } else { # for synchronous PSGI servers
+ require PublicInbox::GetlineBody;
+ $r->[2] = PublicInbox::GetlineBody->new($rpipe, $end,
+ $buf);
+ $res->($r);
}
-
- # for synchronous PSGI servers
- require PublicInbox::GetlineBody;
- $r->[2] = PublicInbox::GetlineBody->new($rpipe, $end, $buf);
- $res->($r);
};
sub {
($res) = @_;
err($env, "error reading input: $!");
return;
}
+ last if $r == 0;
my $off = 0;
while ($r > 0) {
my $w = syswrite($in, $buf, $r, $off);