# processes such as git-apply(1).
package PublicInbox::Qspawn;
-use strict;
-use v5.10.1;
+use v5.12;
use PublicInbox::Spawn qw(popen_rd);
use PublicInbox::GzipFilter;
my $total_rd = 0;
my $hdr_buf = $self->{hdr_buf};
my ($ph_cb, $ph_arg) = @{$self->{parse_hdr}};
- do {
+ until (defined($ret)) {
my $r = sysread($self->{rpipe}, $$hdr_buf, 4096,
length($$hdr_buf));
if (defined($r)) {
if ($@) {
warn "parse_hdr: $@";
$ret = [ 500, [], [ "Internal error\n" ] ];
+ } elsif (!defined($ret) && !$r) {
+ my $cmd = $self->{cmd} // [ '(?)' ];
+ my $env = $self->{psgi_env};
+ warn <<EOM;
+EOF parsing headers from @$cmd ($self->{psgi_env}->{REQUEST_URI})
+EOM
+ $ret = [ 500, [], [ "Internal error\n" ] ];
}
} else {
# caller should notify us when it's ready:
warn "error reading header: $!";
$ret = [ 500, [], [ "Internal error\n" ] ];
}
- } until (defined $ret);
+ }
delete $self->{parse_hdr}; # done parsing headers
$ret;
}
}
package PublicInbox::Qspawn::Limiter;
-use strict;
-use warnings;
+use v5.12;
sub new {
my ($class, $max) = @_;