From 264be4e30924254758a2bbaf5fa80f8c152bec08 Mon Sep 17 00:00:00 2001 From: Deivid Soto Date: Tue, 7 Apr 2026 19:18:13 +0200 Subject: [PATCH] fix(stream): use platform-specific socket options for Windows cross-compilation --- internal/engine/sockopt_unix.go | 9 +++++++++ internal/engine/sockopt_windows.go | 9 +++++++++ internal/engine/stream_server.go | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 internal/engine/sockopt_unix.go create mode 100644 internal/engine/sockopt_windows.go diff --git a/internal/engine/sockopt_unix.go b/internal/engine/sockopt_unix.go new file mode 100644 index 0000000..7856425 --- /dev/null +++ b/internal/engine/sockopt_unix.go @@ -0,0 +1,9 @@ +//go:build !windows + +package engine + +import "syscall" + +func setReuseAddr(fd uintptr) error { + return syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1) +} diff --git a/internal/engine/sockopt_windows.go b/internal/engine/sockopt_windows.go new file mode 100644 index 0000000..dc0aa9d --- /dev/null +++ b/internal/engine/sockopt_windows.go @@ -0,0 +1,9 @@ +//go:build windows + +package engine + +import "syscall" + +func setReuseAddr(fd uintptr) error { + return syscall.SetsockoptInt(syscall.Handle(fd), syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1) +} diff --git a/internal/engine/stream_server.go b/internal/engine/stream_server.go index ebd3f67..35bf613 100644 --- a/internal/engine/stream_server.go +++ b/internal/engine/stream_server.go @@ -72,7 +72,7 @@ func (ss *StreamServer) Listen(ctx context.Context) error { lc := net.ListenConfig{ Control: func(network, address string, c syscall.RawConn) error { return c.Control(func(fd uintptr) { - _ = syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1) + _ = setReuseAddr(fd) }) }, }