about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/GitHTTPBackend.pm18
1 files changed, 8 insertions, 10 deletions
diff --git a/lib/PublicInbox/GitHTTPBackend.pm b/lib/PublicInbox/GitHTTPBackend.pm
index 4ad3fd1e..1fa5e30e 100644
--- a/lib/PublicInbox/GitHTTPBackend.pm
+++ b/lib/PublicInbox/GitHTTPBackend.pm
@@ -225,7 +225,6 @@ sub serve_smart {
         };
         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;
@@ -236,17 +235,16 @@ sub serve_smart {
                                 $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) = @_;