diff options
| author | Přemysl Eric Janouch <p@janouch.name> | 2021-09-23 20:32:00 +0200 | 
|---|---|---|
| committer | Přemysl Eric Janouch <p@janouch.name> | 2021-09-23 20:32:00 +0200 | 
| commit | fd9d5db1d23bd852dbb8af206400e49002c5068a (patch) | |
| tree | c0dfe17a68a432b50eccbae998cbf8b63dd200e3 | |
| parent | cb480b4c71d70ed19ea67a7594e1353b16ed897a (diff) | |
| download | xK-fd9d5db1d23bd852dbb8af206400e49002c5068a.tar.gz xK-fd9d5db1d23bd852dbb8af206400e49002c5068a.tar.xz xK-fd9d5db1d23bd852dbb8af206400e49002c5068a.zip  | |
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.
| -rw-r--r-- | NEWS | 2 | ||||
| -rw-r--r-- | xD.c | 20 | 
2 files changed, 21 insertions, 1 deletions
@@ -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" @@ -1,7 +1,7 @@  /*   * xD.c: an IRC daemon   * - * Copyright (c) 2014 - 2020, Přemysl Eric Janouch <p@janouch.name> + * Copyright (c) 2014 - 2021, Přemysl Eric Janouch <p@janouch.name>   *   * 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 <nl_types.h> +#include <sys/resource.h>  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;  | 
