diff options
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r-- | lib/PublicInbox/IMAP.pm | 4 | ||||
-rw-r--r-- | lib/PublicInbox/InboxIdle.pm | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/PublicInbox/IMAP.pm b/lib/PublicInbox/IMAP.pm index 9ae7c60e..d4ef6efe 100644 --- a/lib/PublicInbox/IMAP.pm +++ b/lib/PublicInbox/IMAP.pm @@ -1462,6 +1462,10 @@ sub cmd_starttls ($$) { # for graceful shutdown in PublicInbox::Daemon: sub busy { my ($self, $now) = @_; + if (defined($self->{-idle_tag})) { + $self->write(\"* BYE server shutting down\r\n"); + return; # not busy anymore + } ($self->{rbuf} || $self->{wbuf} || $self->not_idle_long($now)); } diff --git a/lib/PublicInbox/InboxIdle.pm b/lib/PublicInbox/InboxIdle.pm index d60d4f23..d0bb43c5 100644 --- a/lib/PublicInbox/InboxIdle.pm +++ b/lib/PublicInbox/InboxIdle.pm @@ -79,4 +79,8 @@ sub event_step { warn "$self->{inot}->poll err: $@\n" if $@; } +# for graceful shutdown in PublicInbox::Daemon, +# just ensure the FD gets closed ASAP and subscribers +sub busy { 0 } + 1; |