diff options
-rw-r--r-- | lib/PublicInbox/Watch.pm | 5 | ||||
-rwxr-xr-x | script/public-inbox-watch | 1 |
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/PublicInbox/Watch.pm b/lib/PublicInbox/Watch.pm index 810fb63b..693c7181 100644 --- a/lib/PublicInbox/Watch.pm +++ b/lib/PublicInbox/Watch.pm @@ -528,7 +528,8 @@ sub watch_nntp_init ($$) { sub watch { # main entry point my ($self, $sig, $oldset) = @_; $self->{oldset} = $oldset; - $self->{sig} = $sig; + my $first_sig; + $self->{sig} //= ($first_sig = $sig); my $poll = {}; # intvl_seconds => [ uri1, uri2 ] watch_imap_init($self, $poll) if $self->{imap}; watch_nntp_init($self, $poll) if $self->{nntp}; @@ -538,7 +539,7 @@ sub watch { # main entry point } watch_fs_init($self) if $self->{mdre}; local @PublicInbox::DS::post_loop_do = (sub { !$self->quit_done }); - PublicInbox::DS::event_loop($sig, $oldset); # calls ->event_step + PublicInbox::DS::event_loop($first_sig, $oldset); # calls ->event_step _done_for_now($self); } diff --git a/script/public-inbox-watch b/script/public-inbox-watch index 4c50461f..2fb27343 100755 --- a/script/public-inbox-watch +++ b/script/public-inbox-watch @@ -27,6 +27,7 @@ my $reload = sub { $watch->quit; $watch = PublicInbox::Watch->new(PublicInbox::Config->new); if ($watch) { + $watch->{sig} = $prev->{sig}; # prevent redundant signalfd warn "# reloaded\n"; } else { warn("E: reloading failed\n"); |