+sub imapd_refresh_step { # pi_config->iterate_start cb
+ my ($pi_config, $section, $imapd) = @_;
+ if (defined($section)) {
+ return if $section !~ m!\Apublicinbox\.([^/]+)\z!;
+ my $ibx = $pi_config->lookup_name($1) or return;
+ imapd_refresh_ibx($ibx, $imapd);
+ } else { # "EOF"
+ imapd_refresh_finalize($imapd, $pi_config);
+ }
+}
+
+sub refresh_groups {
+ my ($self, $sig) = @_;
+ my $pi_config = PublicInbox::Config->new;
+ $self->{tmp_groups} = {};
+ if (0 && $sig) { # SIGHUP
+ $pi_config->iterate_start(\&imapd_refresh_step, $self);
+ PublicInbox::DS::requeue($pi_config); # call event_step
+ } else { # initial start
+ $pi_config->each_inbox(\&imapd_refresh_ibx, $self);
+ imapd_refresh_finalize($self, $pi_config);
+ }
+}
+