]> Sergey Matveev's repositories - public-inbox.git/commitdiff
daemon: handle per-listener options on inherited, well-known ports
authorEric Wong <e@80x24.org>
Thu, 4 Aug 2022 06:27:39 +0000 (06:27 +0000)
committerEric Wong <e@80x24.org>
Thu, 4 Aug 2022 07:01:01 +0000 (07:01 +0000)
We must not clobber already-parsed per-listener options when
handling inherited sockets which are well-known.  Unfortunately,
this isn't easy to test in a non-intrusive way for regular
users.

lib/PublicInbox/Daemon.pm

index 67b26d2e8addee54a360073ecd07d2062790a320..862347715e277f7a5cdafe01fe2ecf25d8d0b9b9 100644 (file)
@@ -261,10 +261,10 @@ EOF
        for my $sockname (@inherited_names) {
                $sockname =~ /:([0-9]+)\z/ or next;
                if (my $scheme = $KNOWN_TLS{$1}) {
-                       $xnetd->{$sockname} = load_mod($scheme);
+                       $xnetd->{$sockname} //= load_mod($scheme);
                        $tls_opt{"$scheme://$sockname"} ||= accept_tls_opt('');
                } elsif (($scheme = $KNOWN_STARTTLS{$1})) {
-                       $xnetd->{$sockname} = load_mod($scheme);
+                       $xnetd->{$sockname} //= load_mod($scheme);
                        $tls_opt{"$scheme://$sockname"} ||= accept_tls_opt('');
                        $tls_opt{''} ||= accept_tls_opt('');
                }