From 01f2e00be4671e1100b6180310c0fd8c0035ebc8 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 15 Jun 2020 07:43:17 +0000 Subject: imap: improve IDLE handling at graceful shutdown Since IMAP IDLE users aren't expected to issue any commands, we can terminate their connections immediately on graceful shutdown. Furthermore, we need to drop the inotify FD from the epoll set to avoid warnings during global destruction. Embarassingly, this required fixing wacky test ordering from 2a717d13f10fcdc6 ("nntpd+imapd: detect replaced over.sqlite3") --- lib/PublicInbox/IMAP.pm | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lib/PublicInbox/IMAP.pm') 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)); } -- cgit v1.2.3-24-ge0c7