package PublicInbox::IMAPD;
use strict;
use PublicInbox::Config;
+use PublicInbox::ConfigIter;
use PublicInbox::InboxIdle;
use PublicInbox::IMAP;
use PublicInbox::DummyInbox;
# this case is a 32-bit representation of the creation
# date/time of the mailbox"
defined($ibx->{uidvalidity} = $mm->created_at) or return;
- PublicInbox::IMAP::ensure_ranges_exist($imapd, $ibx, $mm->max // 0);
+ PublicInbox::IMAP::ensure_slices_exist($imapd, $ibx, $mm->max // 0);
# preload to avoid fragmentation:
$ibx->description;
my $u = $_; # capitalize "INBOX" for user-familiarity
$u =~ s/\Ainbox(\.|\z)/INBOX$1/i;
qq[* LIST (\\Has${no}Children) "." $u\r\n]
- } sort {
- # shortest names first, alphabetically if lengths match
- length($a) == length($b) ?
- ($a cmp $b) :
- (length($a) <=> length($b))
} keys %$mailboxes
];
$imapd->{pi_config} = $pi_config;
my $pi_config = PublicInbox::Config->new;
if ($sig) { # SIGHUP is handled through the event loop
$self->{imapd_next} = { dummies => {}, mailboxes => {} };
- $pi_config->iterate_start(\&imapd_refresh_step, $self);
- PublicInbox::DS::requeue($pi_config); # call event_step
+ my $iter = PublicInbox::ConfigIter->new($pi_config,
+ \&imapd_refresh_step, $self);
+ $iter->event_step;
} else { # initial start is synchronous
$self->{dummies} = {};
$pi_config->each_inbox(\&imapd_refresh_ibx, $self);