+sub load_mod ($) {
+ my ($scheme) = @_;
+ my $modc = "PublicInbox::\U$scheme";
+ my $mod = $modc.'D';
+ eval "require $mod"; # IMAPD|HTTPD|NNTPD|POP3D
+ die $@ if $@;
+ my %xn = map { $_ => $mod->can($_) } qw(refresh post_accept);
+ $xn{tlsd} = $mod->new if $mod->can('refresh_groups'); #!HTTPD
+ my $tlsd = $xn{tlsd};
+ $xn{refresh} //= sub { $tlsd->refresh_groups(@_) };
+ $xn{post_accept} //= sub { $modc->new($_[0], $tlsd) };
+ $xn{af_default} = 'httpready' if $modc eq 'PublicInbox::HTTP';
+ \%xn;
+}
+
+sub daemon_prepare ($$) {
+ my ($default_listen, $xnetd) = @_;