From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 2BC3D1F5A0 for ; Thu, 19 Jan 2023 20:32:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1674160358; bh=dzVEh+2mU1rSIhUS/YuOKAhVcGJbxCIsgdA2SMcSDoY=; h=From:To:Subject:Date:In-Reply-To:References:From; b=dVff9rUrfV8XNQpNIuc947y7gkdH92eatClPH0zLaO+WmGq1jYdfhPKGIRlL3Y+NC /+2jM/lnGgVTtSw8vTWVAVKlW4an5eqCLYbXG8oW8cfthCqQY9truIlrehqku0PxEA kqx2ap8s7ZQnBOgJcMiJhn57fnEemXolfgjIIvvo= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 2/4] qspawn: psgi_qx: do not call async_pass on errors Date: Thu, 19 Jan 2023 20:32:35 +0000 Message-Id: <20230119203237.2277543-3-e@80x24.org> In-Reply-To: <20230119203237.2277543-1-e@80x24.org> References: <20230119203237.2277543-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: This makes control flow slightly less confusing. --- lib/PublicInbox/Qspawn.pm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/PublicInbox/Qspawn.pm b/lib/PublicInbox/Qspawn.pm index c4708c0f..de74b174 100644 --- a/lib/PublicInbox/Qspawn.pm +++ b/lib/PublicInbox/Qspawn.pm @@ -142,20 +142,20 @@ sub start ($$$) { sub psgi_qx_init_cb { # this may be PublicInbox::HTTPD::Async {cb} my ($self) = @_; - my $async = delete $self->{async}; # PublicInbox::HTTPD::Async my ($r, $buf); - my $qx_fh = $self->{qx_fh}; reread: $r = sysread($self->{rpipe}, $buf, 65536); - if ($async) { - $async->async_pass($self->{psgi_env}->{'psgix.io'}, - $qx_fh, \$buf); - } elsif (defined $r) { - $r ? (print $qx_fh $buf) : event_step($self, undef); - } else { + if (!defined($r)) { return if $! == EAGAIN; # try again when notified goto reread if $! == EINTR; event_step($self, $!); + } elsif (my $as = delete $self->{async}) { # PublicInbox::HTTPD::Async + $as->async_pass($self->{psgi_env}->{'psgix.io'}, + $self->{qx_fh}, \$buf); + } elsif ($r) { # generic PSGI: + print { $self->{qx_fh} } $buf; + } else { # EOF + event_step($self, undef); } }