For fast PSGI responses which don't require returning a coderef,
just reuse qspawn.wcb directly on the arrayref to avoid an undef
$wcb from firing in psgi_return_init_cb.

I only noticed this because the ViewVCS search form is broken
for /$CODEREPO/$OID/s/ endpoints at the moment.
---
 lib/PublicInbox/GitHTTPBackend.pm | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/lib/PublicInbox/GitHTTPBackend.pm 
b/lib/PublicInbox/GitHTTPBackend.pm
index 61a13560..3aae5454 100644
--- a/lib/PublicInbox/GitHTTPBackend.pm
+++ b/lib/PublicInbox/GitHTTPBackend.pm
@@ -155,7 +155,11 @@ sub parse_cgi_headers {
                delete $ctx->{env}->{'qspawn.wcb'};
                $ctx->{env}->{'plack.skip-deflater'} = 1; # prevent 2x gzip
                my $res = $ctx->{www}->coderepo->srv(\%ctx);
-               $res->(delete $ctx{env}->{'qspawn.wcb'}) if ref($res) eq 'CODE';
+               if (ref($res) eq 'CODE') {
+                       $res->(delete $ctx{env}->{'qspawn.wcb'});
+               } else { # ref($res) eq 'ARRAY'
+                       $ctx->{env}->{'qspawn.wcb'} = $ctx{env}->{'qspawn.wcb'};
+               }
                $res; # non ARRAY ref for ->psgi_return_init_cb
        } else {
                [ $code, \@h ]

Reply via email to