+ my $max = $ibx->mm->max // 0;
+ my $uid_end = ($self->{uid_min} // 1) - 1 + UID_BLOCK;
+ my $sock = $self->{sock} or return;
+ my $fd = fileno($sock);
+ # only do inotify on most recent slice
+ if ($max < $uid_end) {
+ $ibx->subscribe_unlock($fd, $self);
+ $self->{imapd}->idler_start;
+ $self->{-idle_max} = $max;
+ }
+ $idle_timer //= PublicInbox::DS::later(\&idle_tick_all);
+ $IDLERS->{$fd} = $self;
+ \"+ idling\r\n"
+}
+
+sub stop_idle ($$) {
+ my ($self, $ibx);
+ my $sock = $self->{sock} or return;
+ my $fd = fileno($sock);
+ delete $IDLERS->{$fd};
+ $ibx->unsubscribe_unlock($fd);