From b8ec81dfe325e924fdaa1828ea2722c6f4293ee2 Mon Sep 17 00:00:00 2001 From: wollman Date: Wed, 27 Sep 2000 19:03:05 +0000 Subject: Set SO_REUSEADDR so that lpd can start while old lpd connections are still winding down (or timing out). Also, be slightly more informative in mcleanup() about why lpd is exiting. PR: 21595 --- usr.sbin/lpr/lpd/lpd.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'usr.sbin/lpr') diff --git a/usr.sbin/lpr/lpd/lpd.c b/usr.sbin/lpr/lpd/lpd.c index 76846a7..367161c 100644 --- a/usr.sbin/lpr/lpd/lpd.c +++ b/usr.sbin/lpr/lpd/lpd.c @@ -285,6 +285,12 @@ main(argc, argv) if (pflag == 0) { finet = socket(AF_INET, SOCK_STREAM, 0); if (finet >= 0) { + i = 1; + if (setsockopt(finet, SOL_SOCKET, SO_REUSEADDR, &i, + sizeof i) < 0) { + syslog(LOG_ERR, "setsockopt(SO_REUSEADDR): %m"); + mcleanup(0); + } if (options & SO_DEBUG && setsockopt(finet, SOL_SOCKET, SO_DEBUG, 0, 0) < 0) { syslog(LOG_ERR, "setsockopt (SO_DEBUG): %m"); @@ -377,8 +383,15 @@ static void mcleanup(signo) int signo; { - if (lflag) - syslog(LOG_INFO, "exiting"); + /* + * XXX syslog(3) is not signal-safe. + */ + if (lflag) { + if (signo) + syslog(LOG_INFO, "exiting on signal %d", signo); + else + syslog(LOG_INFO, "exiting"); + } unlink(_PATH_SOCKETNAME); exit(0); } -- cgit v1.1