From a2b36a37ff00931c79bd88606349feb81de6cdc6 Mon Sep 17 00:00:00 2001 From: sfja Date: Thu, 26 Mar 2026 00:41:23 +0100 Subject: [PATCH] reuse address --- backend/src/tcp.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/backend/src/tcp.cpp b/backend/src/tcp.cpp index be3155d..07e78a9 100644 --- a/backend/src/tcp.cpp +++ b/backend/src/tcp.cpp @@ -47,6 +47,18 @@ auto TcpListener::bind(const std::string& host, uint16_t port) .sin_zero = { }, }; + // enable immediate reuse of socket address + // see socket(7) about SO_REUSEADDR + // > Argument is an integer boolean flag. + int reuse_address = true; + if (::setsockopt(socket_fd, + SOL_SOCKET, + SO_REUSEADDR, + &reuse_address, + sizeof(reuse_address))) { + return std::unexpected(errno_shim("could not configure socket")); + } + if (::bind(socket_fd, (struct sockaddr*)&address, sizeof(address)) < 0) { return std::unexpected(errno_shim("could not bind")); }