about summary refs log tree commit homepage
path: root/lib/PublicInbox/Watch.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/Watch.pm')
-rw-r--r--lib/PublicInbox/Watch.pm11
1 files changed, 4 insertions, 7 deletions
diff --git a/lib/PublicInbox/Watch.pm b/lib/PublicInbox/Watch.pm
index 41b77dc1..c2b1312a 100644
--- a/lib/PublicInbox/Watch.pm
+++ b/lib/PublicInbox/Watch.pm
@@ -256,9 +256,8 @@ sub quit { # may be called in IMAP/NNTP children
         %{$self->{opendirs}} = ();
         _done_for_now($self);
         quit_done($self);
-        if (defined(my $fd = delete $self->{dir_idle_fd})) {
-                my $di = $PublicInbox::DS::DescriptorMap{$fd};
-                $di->close if $di && $di->can('add_watches');
+        if (my $dir_idle = delete $self->{dir_idle}) {
+                $dir_idle->close if $dir_idle;
         }
         if (my $idle_mic = delete $self->{idle_mic}) { # IMAP child
                 return unless $idle_mic->IsConnected && $idle_mic->Socket;
@@ -283,8 +282,7 @@ sub watch_fs_init ($) {
         };
         require PublicInbox::DirIdle;
         # inotify_create + EPOLL_CTL_ADD
-        my $dir_idle = PublicInbox::DirIdle->new($cb);
-        $self->{dir_idle_fd} = fileno($dir_idle->{sock}) if $dir_idle->{sock};
+        my $dir_idle = $self->{dir_idle} = PublicInbox::DirIdle->new($cb);
         $dir_idle->add_watches([keys %{$self->{mdmap}}]);
 }
 
@@ -383,8 +381,7 @@ sub watch_imap_idle_1 ($$$) {
 
 sub watch_atfork_child ($) {
         my ($self) = @_;
-        delete $self->{pids};
-        delete $self->{opendirs};
+        delete @$self{qw(dir_idle pids opendirs)};
         my $sig = delete $self->{sig};
         $sig->{CHLD} = $sig->{HUP} = $sig->{USR1} = 'DEFAULT';
         # TERM/QUIT/INT call ->quit, which works in both parent+child