aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Socket.cpp
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2019-11-18 10:26:46 +0100
committerMatthias P. Braendli <matthias.braendli@mpb.li>2019-11-18 10:26:46 +0100
commit746b45c0e70b78de948334646409133bc2dbcd87 (patch)
tree719460cde94849a59ec4522c3d08b591932be19d /lib/Socket.cpp
parent5b1dea7f85749d14bf85114accd01677caae7530 (diff)
downloaddabmux-746b45c0e70b78de948334646409133bc2dbcd87.tar.gz
dabmux-746b45c0e70b78de948334646409133bc2dbcd87.tar.bz2
dabmux-746b45c0e70b78de948334646409133bc2dbcd87.zip
Common 0a50ea0: Set SO_REUSEADDR for TCP sockets
Diffstat (limited to 'lib/Socket.cpp')
-rw-r--r--lib/Socket.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/Socket.cpp b/lib/Socket.cpp
index 0c3cbb4..cba2767 100644
--- a/lib/Socket.cpp
+++ b/lib/Socket.cpp
@@ -490,6 +490,11 @@ void TCPSocket::listen(int port, const string& name)
continue;
}
+ int reuse_setting = 1;
+ if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &reuse_setting, sizeof(reuse_setting)) == -1) {
+ throw runtime_error("Can't reuse address");
+ }
+
if (::bind(sfd, rp->ai_addr, rp->ai_addrlen) == 0) {
m_sock = sfd;
break;