X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=script%2Fpublic-inbox-watch;h=20534bf2a3ec196e36cdd3c9d2bb0c6136fba849;hb=29c5f2a6fc3b86306a5dbeadfae061d06f2bc6dd;hp=b6d545adad782c81cecb92c49e3dbb7578575546;hpb=58c0333adbdd9f5f82309cb6eef3c379f0ff064e;p=public-inbox.git diff --git a/script/public-inbox-watch b/script/public-inbox-watch index b6d545ad..20534bf2 100755 --- a/script/public-inbox-watch +++ b/script/public-inbox-watch @@ -2,13 +2,15 @@ # Copyright (C) 2016-2020 all contributors # License: AGPL-3.0+ use strict; -use warnings; +use IO::Handle; use PublicInbox::WatchMaildir; use PublicInbox::Config; use PublicInbox::DS; use PublicInbox::Sigfd; -use PublicInbox::Syscall qw(SFD_NONBLOCK); +use PublicInbox::Syscall qw($SFD_NONBLOCK); my $oldset = PublicInbox::Sigfd::block_signals(); +STDOUT->autoflush(1); +STDERR->autoflush(1); my ($config, $watch_md); my $reload = sub { $config = PublicInbox::Config->new; @@ -22,14 +24,18 @@ if ($watch_md) { $watch_md->quit if $watch_md; $watch_md = undef; }; - my $sig = { HUP => $reload, USR1 => $scan }; + my $sig = { + HUP => $reload, + USR1 => $scan, + CHLD => \&PublicInbox::DS::enqueue_reap, + }; $sig->{QUIT} = $sig->{TERM} = $sig->{INT} = $quit; # --no-scan is only intended for testing atm, undocumented. unless (grep(/\A--no-scan\z/, @ARGV)) { PublicInbox::DS::requeue($scan); } - my $sigfd = PublicInbox::Sigfd->new($sig, SFD_NONBLOCK); + my $sigfd = PublicInbox::Sigfd->new($sig, $SFD_NONBLOCK); local %SIG = (%SIG, %$sig) if !$sigfd; if (!$sigfd) { PublicInbox::Sigfd::set_sigmask($oldset);