Commit 631eb6783d
Changed files (1)
lib
std
lib/std/net.zig
@@ -1290,6 +1290,9 @@ pub const StreamServer = struct {
/// If more than this many connections pool in the kernel, clients will start
/// seeing "Connection refused".
kernel_backlog: u32 = 128,
+
+ /// Enable SO_REUSEADDR on the socket.
+ reuse_address: bool = false,
};
/// After this call succeeds, resources have been acquired and must
@@ -1320,6 +1323,19 @@ pub const StreamServer = struct {
self.sockfd = null;
}
+ // TODO proper interface with errors in std.os
+ var optval: c_int = 1;
+
+ if (self.options.reuse_address) {
+ _ = os.linux.setsockopt(
+ server.sockfd.?,
+ os.linux.SOL_SOCKET,
+ os.linux.SO_REUSEADDR,
+ @ptrCast([*]const u8, &optval),
+ @sizeOf(c_int),
+ );
+ }
+
var socklen = address.getOsSockLen();
try os.bind(sockfd, &address.any, socklen);
try os.listen(sockfd, self.kernel_backlog);