From b017f90846947a2bcddc7ae2b0fbd9c8252e44a8 Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Sun, 30 Nov 2014 14:47:26 +0100 Subject: [PATCH] bind: re-use address, setsockopt SO_REUSEADDR --- quark.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/quark.c b/quark.c index 7a40d6a..08a8668 100644 --- a/quark.c +++ b/quark.c @@ -514,7 +514,7 @@ invalid_request: void serve(int fd) { - int result; + int result, optval; struct timeval tv; socklen_t salen; struct sockaddr sa; @@ -541,6 +541,11 @@ serve(int fd) host, sizeof host); break; } + /* bind: re-use address */ + optval = 1; + if (setsockopt(req.fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) < 0) + logerrmsg("error\tsetsockopt SO_REUSEADDR failed: %s\n", + strerror(errno)); /* If we haven't received any data within this period, close the * socket to avoid spamming the process table */