From c29d691d32eea87b748587cc1f9c418a1bd1a00e Mon Sep 17 00:00:00 2001 From: Alvar Penning Date: Tue, 17 Feb 2026 22:55:29 +0100 Subject: httpd: Log xs_socket_accept failure reason So far, it was expected that xs_socket_accept should work and while its failure results in a termination, it was not properly logged. With this change, an error message including the strerror message is being logged. After experiencing some unexpected snac httpd shutdowns, I added a bit of additional logging, including when xs_socket_accept fails. This proved useful, as it unveiled a deeper error on my machine: > xs_socket_accept failed: Too many open files Since entering this code path results in termination, I thought upstreaming this logging might be useful for others. --- httpd.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/httpd.c b/httpd.c index f46cfca..219af19 100644 --- a/httpd.c +++ b/httpd.c @@ -1116,9 +1116,10 @@ void httpd(void) FILE *f = fdopen(cs, "r+"); xs *job = xs_data_new(&f, sizeof(FILE *)); job_post(job, 1); - } - else + } else { + srv_log(xs_fmt("error: xs_socket_accept failed: %s", strerror(errno))); break; + } } } -- cgit v1.2.3 From 361fdaaa11226554854cb292fe0ed6b372898320 Mon Sep 17 00:00:00 2001 From: Alvar Penning Date: Tue, 17 Feb 2026 23:03:23 +0100 Subject: OpenBSD: Document login class w/ extended openfiles A file heavy applications makes heavy use of files. Shocking news. OpenBSD's daemon login class limits the amount of openfiles quite strict. This restriction is an annoyance for lots of applications, and, unless I am mistaken, seems to be an issue for snac as well. Thus, after hopefully fixing this on my instance, I tried to briefly document this in snac(8) and provide a minimal login.conf(5) example. --- doc/snac.8 | 35 +++++++++++++++++++++++++++++++++++ examples/snac_openbsd_login_conf | 7 +++++++ 2 files changed, 42 insertions(+) create mode 100755 examples/snac_openbsd_login_conf diff --git a/doc/snac.8 b/doc/snac.8 index 78e1946..8265dea 100644 --- a/doc/snac.8 +++ b/doc/snac.8 @@ -704,6 +704,41 @@ out there. If you want your language file to be included in the standard .Nm distribution, please send me a link to it via the Fediverse to @grunfink@comam.es or make a PR via the Git repository. +.Ss Number of open files on OpenBSD and login classes +Being a file intensive application, even a small +.Nm +instance might open lots of files, especially when forwarding a new post to +other instances. +.Pp +OpenBSD's daemon login class comes with a very low +.Pa openfiles +value, usually restricting the amount of open files to 128 (cur), 1024 (max). +This can result in +.Nm +to stop working due to too many open files. +.Pp +To continue operation, a new +.Pa snac +login class can be created. Please consult +.Xr login.conf 5 +and afterwards create a new login class as follows. +.Bd -literal -offset indent +snac:\\ + :openfiles=4096:\\ + :tc=daemon: +.Ed +.Pp +After rebuilding the +.Pa /etc/login.conf.db , +ensure that your snac user's login class is set to +.Pa snac : +.Bd -literal -offset indent +# cap_mkdb /etc/login.conf +# usermod -L snac SNACUSER +.Ed +.Pp +One restart later, the daemon should run with increased +.Pa openfiles . .Sh ENVIRONMENT .Bl -tag -width Ds .It Ev DEBUG diff --git a/examples/snac_openbsd_login_conf b/examples/snac_openbsd_login_conf new file mode 100755 index 0000000..f39b9a1 --- /dev/null +++ b/examples/snac_openbsd_login_conf @@ -0,0 +1,7 @@ +# OpenBSD login.conf(5) entry to increase the openfiles for the snac login +# class. Further documented under "Number of open files on OpenBSD and login +# classes" in snac(8). + +snac:\ + :openfiles=4096:\ + :tc=daemon: -- cgit v1.2.3