about summary refs log tree commit homepage
path: root/lib/PublicInbox/LEI.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2022-11-28 05:32:17 +0000
committerEric Wong <e@80x24.org>2022-11-28 23:38:58 +0000
commit7cb5dac3b11acf0d79f599a060cd56d3b73162b1 (patch)
treefaae067908a15eee19584be7354943dbf5d99cd6 /lib/PublicInbox/LEI.pm
parent6db94da4d12a8139dca911a4824386838ba4e6d2 (diff)
downloadpublic-inbox-7cb5dac3b11acf0d79f599a060cd56d3b73162b1.tar.gz
This makes a fundamental (and overdue) change to the core of
lei in how it handles child errors.  Every process which
generates or receives a child error will remember it before
passing it on.  This ensures _wq_done_wait callbacks will
know of prior errors aside from $? when it runs.
Diffstat (limited to 'lib/PublicInbox/LEI.pm')
-rw-r--r--lib/PublicInbox/LEI.pm3
1 files changed, 1 insertions, 2 deletions
diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm
index 8a14ace4..b78d70de 100644
--- a/lib/PublicInbox/LEI.pm
+++ b/lib/PublicInbox/LEI.pm
@@ -544,12 +544,11 @@ sub child_error { # passes non-fatal curl exit codes to user
         local $current_lei = $self;
         $child_error ||= 1 << 8;
         warn(substr($msg, -1, 1) eq "\n" ? $msg : "$msg\n") if defined $msg;
+        $self->{child_error} ||= $child_error;
         if ($self->{pkt_op_p}) { # to top lei-daemon
                 $self->{pkt_op_p}->pkt_do('child_error', $child_error);
         } elsif ($self->{sock}) { # to lei(1) client
                 send($self->{sock}, "child_error $child_error", MSG_EOR);
-        } else { # non-lei admin command
-                $self->{child_error} ||= $child_error;
         } # else noop if client disconnected
 }