From 74216dceb21edf3d8580d114039d8d54c94913d2 Mon Sep 17 00:00:00 2001 From: cognet Date: Wed, 28 Sep 2005 16:05:13 +0000 Subject: Use SO_REUSEADDR on the socket, to make the use of syslogd in jails easier. Submitted by: Jeremie Le Hen --- usr.sbin/syslogd/syslogd.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'usr.sbin/syslogd') diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index ead508a..19f03cd 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -2553,13 +2553,13 @@ socksetup(int af, const char *bindhostname) *socks = 0; /* num of sockets counter at start of array */ s = socks + 1; for (r = res; r; r = r->ai_next) { + int on = 1; *s = socket(r->ai_family, r->ai_socktype, r->ai_protocol); if (*s < 0) { logerror("socket"); continue; } if (r->ai_family == AF_INET6) { - int on = 1; if (setsockopt(*s, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&on, sizeof (on)) < 0) { logerror("setsockopt"); @@ -2567,6 +2567,12 @@ socksetup(int af, const char *bindhostname) continue; } } + if (setsockopt(*s, SOL_SOCKET, SO_REUSEADDR, + (char *)&on, sizeof (on)) < 1) { + logerror("setsockopt"); + close(*s); + continue; + } if (bind(*s, r->ai_addr, r->ai_addrlen) < 0) { close(*s); logerror("bind"); -- cgit v1.1