The first argument passed to Perl signal handlers is a
signal name (e.g. "TERM") and not an integer that can
be passed to the `exit' perlop. Thus we must look up the
integer value from the POSIX module.
---
 lib/PublicInbox/LEI.pm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm
index 48c5644b..1b14d5e1 100644
--- a/lib/PublicInbox/LEI.pm
+++ b/lib/PublicInbox/LEI.pm
@@ -1310,9 +1310,9 @@ sub lazy_start {
        local $quit = do {
                my (undef, $eof_p) = PublicInbox::PktOp->pair;
                sub {
-                       $exit_code //= shift;
+                       $exit_code //= eval("POSIX::SIG$_[0] + 128") if @_;
                        eval 'PublicInbox::LeiNoteEvent::flush_task()';
-                       my $lis = $pil or exit($exit_code);
+                       my $lis = $pil or exit($exit_code // 0);
                        # closing eof_p triggers \&noop wakeup
                        $listener = $eof_p = $pil = $path = undef;
                        $lis->close; # DS::close

Reply via email to