]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Daemon.pm
daemon+watch: fix localization of %SIG for non-signalfd users
[public-inbox.git] / lib / PublicInbox / Daemon.pm
index 4b738b7c56c7bbc06ce8777ce2a7a63e7dbb75f5..f5543c85cee03b45845a5d0cdb806e175b7a4949 100644 (file)
@@ -514,7 +514,7 @@ EOF
                CHLD => \&reap_children,
        };
        my $sigfd = PublicInbox::Sigfd->new($sig, 0);
-       local %SIG = (%SIG, %$sig) if !$sigfd;
+       local @SIG{keys %$sig} = values(%$sig) unless $sigfd;
        PublicInbox::DS::sig_setmask($oldset) if !$sigfd;
        while (1) { # main loop
                my $n = scalar keys %pids;
@@ -628,7 +628,7 @@ sub daemon_loop ($$$$) {
                PublicInbox::Listener->new($_, $tls_cb || $post_accept)
        } @listeners;
        my $sigfd = PublicInbox::Sigfd->new($sig, SFD_NONBLOCK);
-       local %SIG = (%SIG, %$sig) if !$sigfd;
+       local @SIG{keys %$sig} = values(%$sig) unless $sigfd;
        if (!$sigfd) {
                # wake up every second to accept signals if we don't
                # have signalfd or IO::KQueue: