From fd9d5db1d23bd852dbb8af206400e49002c5068a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Eric=20Janouch?= Date: Thu, 23 Sep 2021 20:32:00 +0200 Subject: [PATCH] xD: bump the soft file descriptor limit By default it's a mere thousand connections, which is unnecessarily crippling our advertised ability to handle lots of them. Thanks for the advice, Lennart. --- NEWS | 2 ++ xD.c | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 8450f73..474c6f1 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,8 @@ * xC: offer IRCnet as an IRC network to connect to, rather than the lunatic new Freenode + * xD: started bumping the soft limit on file descriptors to the hard one + 1.3.0 (2021-08-07) "New World Order" diff --git a/xD.c b/xD.c index 5e8d6a9..8d24cef 100644 --- a/xD.c +++ b/xD.c @@ -1,7 +1,7 @@ /* * xD.c: an IRC daemon * - * Copyright (c) 2014 - 2020, Přemysl Eric Janouch + * Copyright (c) 2014 - 2021, Přemysl Eric Janouch * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted. @@ -22,7 +22,9 @@ #define WANT_SYSLOG_LOGGING #include "common.c" #include "xD-replies.c" + #include +#include enum { PIPE_READ, PIPE_WRITE }; @@ -3984,6 +3986,21 @@ daemonize (struct server_context *ctx) poller_post_fork (&ctx->poller); } +static void +setup_limits (void) +{ + struct rlimit limit; + if (getrlimit (RLIMIT_NOFILE, &limit)) + { + print_warning ("%s: %s", "getrlimit", strerror (errno)); + return; + } + + limit.rlim_cur = limit.rlim_max; + if (setrlimit (RLIMIT_NOFILE, &limit)) + print_warning ("%s: %s", "setrlimit", strerror (errno)); +} + int main (int argc, char *argv[]) { @@ -4030,6 +4047,7 @@ main (int argc, char *argv[]) print_status (PROGRAM_NAME " " PROGRAM_VERSION " starting"); setup_signal_handlers (); + setup_limits (); init_openssl (); struct server_context ctx;