summary refs log tree commit diff
path: root/contrib
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2013-02-04 21:46:20 +0100
committerAlexander Barton <alex@barton.de>2013-02-04 21:52:27 +0100
commit8ab097afb743061c6c9b865bdb401ba51285c347 (patch)
tree8b0691d84cc2a49eeee7c30285f623fa6abf252a /contrib
parent84e24afd2f6607a2345c4df2b2f9ad81e9dd4bbc (diff)
downloadngircd-8ab097afb743061c6c9b865bdb401ba51285c347.tar.gz
ngircd-8ab097afb743061c6c9b865bdb401ba51285c347.zip
Implement support for systemd(8) "socket activation"
This patch enables ngIRCd to work with listening sockets already
initialized and passed-in by systemd(8) and hereby to support on-demand
"socket activation".

systemd(8) uses two environment variables to pass information about the
sockets to ngIRCd, LISTEN_PID and LISTEN_FDS, and this mechanism only
kicks in when both variables are set. In all other cases, and therefore
in most installations out there, nothing changes at all.

Please note:
If socket activation is in effect, ngIRCd will not initialize any (other)
soeckets on its own! All sockets must be configured in the systemd(8)
socket unit configuration file in this case, see ./contrib/ngircd.socket
for example.

Probably it would be interesting to match passed-in sockets to configured
listening sockets and to initialize all the remaining ones not already
set up by systemd(8), but this is kept back for an other patch ...

See
 - <http://0pointer.de/blog/projects/socket-activation.html>
 - <http://0pointer.de/blog/projects/socket-activation2.html>
 - <http://www.freedesktop.org/software/systemd/man/systemd.socket.html>
Diffstat (limited to 'contrib')
-rw-r--r--contrib/Makefile.am3
-rw-r--r--contrib/README3
-rw-r--r--contrib/ngircd.socket10
3 files changed, 15 insertions, 1 deletions
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index 09b43a68..6d16f7ca 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -1,6 +1,6 @@
 #
 # ngIRCd -- The Next Generation IRC Daemon
-# Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors
+# Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -17,6 +17,7 @@ EXTRA_DIST = README \
 	ngIRCd-Logo.gif \
 	ngircd-redhat.init \
 	ngircd.service \
+	ngircd.socket \
 	ngircd.spec \
 	platformtest.sh \
 	systrace.policy
diff --git a/contrib/README b/contrib/README
index f3730a4e..2d639e66 100644
--- a/contrib/README
+++ b/contrib/README
@@ -30,6 +30,9 @@ ngircd-redhat.init
 ngircd.service
  - systemd(8) service unit configuration file.
 
+ngircd.socket
+ - systemd(8) socket unit configuration file for "socket activation".
+
 ngircd.spec
  - RPM "spec" file.
 
diff --git a/contrib/ngircd.socket b/contrib/ngircd.socket
new file mode 100644
index 00000000..3838efcc
--- /dev/null
+++ b/contrib/ngircd.socket
@@ -0,0 +1,10 @@
+[Unit]
+Description=Next Generation IRC Daemon (Socket)
+
+[Socket]
+ListenStream=6667
+#ListenStream=6668
+IPTOS=low-delay
+
+[Install]
+WantedBy=sockets.target