From: Vsevolod Stakhov Date: Mon, 27 Jun 2016 09:54:27 +0000 (+0100) Subject: [Fix] Use non-blocking mode for systemd sockets X-Git-Tag: 1.3.0~247 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=91515f2995f87befae5816840a0684ffc7297980;p=thirdparty%2Frspamd.git [Fix] Use non-blocking mode for systemd sockets Issue: #430 Reported by: @Twilek-de --- diff --git a/rspamd.service b/rspamd.service index 9588d32b04..76b5637ce8 100644 --- a/rspamd.service +++ b/rspamd.service @@ -3,6 +3,8 @@ Description=rapid spam filtering system After=nss-lookup.target [Service] +Type=forking +NonBlocking=true ExecStart=/usr/bin/rspamd -c /etc/rspamd/rspamd.conf -f User=_rspamd RuntimeDirectory=rspamd diff --git a/src/rspamd.c b/src/rspamd.c index cb8eb18063..8757f07e53 100644 --- a/src/rspamd.c +++ b/src/rspamd.c @@ -405,9 +405,13 @@ systemd_get_socket (struct rspamd_main *rspamd_main, gint number) return NULL; } flags = fcntl (sock, F_GETFD); + if (flags != -1) { (void)fcntl (sock, F_SETFD, flags | FD_CLOEXEC); } + + rspamd_socket_nonblocking (sock); + result = g_list_prepend (result, GINT_TO_POINTER (sock)); } else if (num_passed <= number) {