diff --git a/app/internal/sockopts/sockopts_linux.go b/app/internal/sockopts/sockopts_linux.go index 19777b5..e51e75a 100644 --- a/app/internal/sockopts/sockopts_linux.go +++ b/app/internal/sockopts/sockopts_linux.go @@ -58,11 +58,7 @@ func fdControlUnixSocketImpl(c *net.UDPConn, path string) error { } defer unix.Close(socketFd) - timeoutUsec := fdControlUnixTimeout.Microseconds() - timeout := unix.Timeval{ - Sec: timeoutUsec / 1e6, - Usec: timeoutUsec % 1e6, - } + timeout := unixTimeval() _ = unix.SetsockoptTimeval(socketFd, unix.SOL_SOCKET, unix.SO_RCVTIMEO, &timeout) _ = unix.SetsockoptTimeval(socketFd, unix.SOL_SOCKET, unix.SO_SNDTIMEO, &timeout) diff --git a/app/internal/sockopts/timeval_linux_32.go b/app/internal/sockopts/timeval_linux_32.go new file mode 100644 index 0000000..af8c262 --- /dev/null +++ b/app/internal/sockopts/timeval_linux_32.go @@ -0,0 +1,15 @@ +//go:build linux && (386 || arm || mips || mipsle || ppc) + +package sockopts + +import ( + "golang.org/x/sys/unix" +) + +func unixTimeval() unix.Timeval { + timeUsec := fdControlUnixTimeout.Microseconds() + return unix.Timeval{ + Sec: int32(timeUsec / 1e6), + Usec: int32(timeUsec % 1e6), + } +} diff --git a/app/internal/sockopts/timeval_linux_64.go b/app/internal/sockopts/timeval_linux_64.go new file mode 100644 index 0000000..407438c --- /dev/null +++ b/app/internal/sockopts/timeval_linux_64.go @@ -0,0 +1,15 @@ +//go:build linux && (amd64 || arm64 || loong64 || mips64 || mips64le || ppc64 || ppc64le || riscv64 || s390x || sparc64) + +package sockopts + +import ( + "golang.org/x/sys/unix" +) + +func unixTimeval() unix.Timeval { + timeUsec := fdControlUnixTimeout.Microseconds() + return unix.Timeval{ + Sec: timeUsec / 1e6, + Usec: timeUsec % 1e6, + } +}