From b538a4fc80d63b881382e33f517f4e38e559478a Mon Sep 17 00:00:00 2001 From: Pavel Shramov Date: Thu, 29 Nov 2007 13:37:22 +0300 Subject: [PATCH] network plugin: Set SO_REUSEADDR on socket so multiple listeners can share port This patch allows other programs to bind same port and process data from clients not interfering with master collectd server. Signed-off-by: Florian Forster --- src/network.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/network.c b/src/network.c index 21b96940..ab04f4c1 100644 --- a/src/network.c +++ b/src/network.c @@ -683,6 +683,15 @@ static int network_bind_socket (const sockent_t *se, const struct addrinfo *ai) { int loop = 0; + /* allow multiple sockets to use the same PORT number */ + if (setsockopt(se->fd, SOL_SOCKET, SO_REUSEADDR, + &loop, sizeof(loop)) == -1) { + char errbuf[1024]; + ERROR ("setsockopt: %s", + sstrerror (errno, errbuf, sizeof (errbuf))); + return (-1); + } + DEBUG ("fd = %i; calling `bind'", se->fd); if (bind (se->fd, ai->ai_addr, ai->ai_addrlen) == -1) -- 2.11.0