unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
* [PATCH] netd: load modules for well-known ports
@ 2022-07-20  1:22 Eric Wong
  0 siblings, 0 replies; only message in thread
From: Eric Wong @ 2022-07-20  1:22 UTC (permalink / raw)
  To: meta

When inheriting well-known ports from systemd (or similar),
we can auto-load the proper *D.pm file based on the port number
without requiring command-line args.

load_mod also gets fixed to use its argument, instead of implicit
$1 since that won't work for our well-known.
---
 This made setting up public-inbox-netd much easier on
 public-inbox.org (serving IMAP/NNTP/POP3 and TLS variants,
 along with .onion sockets).
 Non-standard ports (.onion sockets) still require CLI args.

 lib/PublicInbox/Daemon.pm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/PublicInbox/Daemon.pm b/lib/PublicInbox/Daemon.pm
index 8b4c3c70..fbce9154 100644
--- a/lib/PublicInbox/Daemon.pm
+++ b/lib/PublicInbox/Daemon.pm
@@ -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('');
 		}

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-07-20  1:22 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-20  1:22 [PATCH] netd: load modules for well-known ports Eric Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).