]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Daemon.pm
netd: load modules for well-known ports
[public-inbox.git] / lib / PublicInbox / Daemon.pm
index 13cce1ec51abcf3499363e388b359db6bd7f4a1a..75719c3413276ddd8abe276565daa4bf30a80b2d 100644 (file)
@@ -77,7 +77,7 @@ sub accept_tls_opt ($) {
 
 sub load_mod ($) {
        my ($scheme) = @_;
-       my $modc = "PublicInbox::\U$1";
+       my $modc = "PublicInbox::\U$scheme";
        my $mod = $modc.'D';
        eval "require $mod"; # IMAPD|HTTPD|NNTPD|POP3D
        die $@ if $@;
@@ -204,8 +204,10 @@ EOF
        for my $sockname (@inherited_names) {
                $sockname =~ /:([0-9]+)\z/ or next;
                if (my $scheme = $KNOWN_TLS{$1}) {
+                       $xnetd->{$sockname} = load_mod(substr($scheme, 0, -1));
                        $tls_opt{"$scheme://$sockname"} ||= accept_tls_opt('');
                } elsif (($scheme = $KNOWN_STARTTLS{$1})) {
+                       $xnetd->{$sockname} = load_mod($scheme);
                        next if $tls_opt{"$scheme://$sockname"};
                        $tls_opt{''} ||= accept_tls_opt('');
                }
@@ -618,9 +620,9 @@ sub daemon_loop ($) {
        while (my ($k, $v) = each %tls_opt) {
                my $l = $k;
                $l =~ s!\A([^:]+)://!!;
-               my $scheme = $1;
+               my $scheme = $1 // '';
                my $xn = $xnetd->{$l} // $xnetd->{''};
-               if ($scheme =~ s!\A(?:https|imaps|nntps)!!) {
+               if ($scheme =~ m!\A(?:https|imaps|nntps)!) {
                        $post_accept{$l} = tls_start_cb($v, $xn->{post_accept});
                } elsif ($xn->{tlsd}) { # STARTTLS, $k eq '' is OK
                        $xn->{tlsd}->{accept_tls} = $v;