From 4850b1b332fde9b9ec74873c7b85b9a8bd619f99 Mon Sep 17 00:00:00 2001 From: Owen Date: Sat, 31 Jan 2026 17:50:31 -0800 Subject: [PATCH] Handle cross platform close Former-commit-id: 89932bb736c7f4b3eb9bb2384b0cf6bd27872c1c --- olm/olm.go | 3 +-- olm/olm_unix.go | 10 ++++++++++ olm/olm_windows.go | 10 ++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 olm/olm_unix.go create mode 100644 olm/olm_windows.go diff --git a/olm/olm.go b/olm/olm.go index 0625a63..9bd41b2 100644 --- a/olm/olm.go +++ b/olm/olm.go @@ -8,7 +8,6 @@ import ( _ "net/http/pprof" "os" "sync" - "syscall" "time" "github.com/fosrl/newt/bind" @@ -576,7 +575,7 @@ func (o *Olm) Close() { // If we never created a device from the FD, close it explicitly // This can happen if tunnel is stopped during registration before handleConnect logger.Debug("Closing unused TUN file descriptor %d", o.tunnelConfig.FileDescriptorTun) - if err := syscall.Close(int(o.tunnelConfig.FileDescriptorTun)); err != nil { + if err := closeFD(o.tunnelConfig.FileDescriptorTun); err != nil { logger.Error("Failed to close TUN file descriptor: %v", err) } else { logger.Info("Closed unused TUN file descriptor") diff --git a/olm/olm_unix.go b/olm/olm_unix.go new file mode 100644 index 0000000..174934b --- /dev/null +++ b/olm/olm_unix.go @@ -0,0 +1,10 @@ +//go:build !windows + +package olm + +import "syscall" + +// closeFD closes a file descriptor in a platform-specific way +func closeFD(fd uint32) error { + return syscall.Close(int(fd)) +} \ No newline at end of file diff --git a/olm/olm_windows.go b/olm/olm_windows.go new file mode 100644 index 0000000..62a5a82 --- /dev/null +++ b/olm/olm_windows.go @@ -0,0 +1,10 @@ +//go:build windows + +package olm + +import "syscall" + +// closeFD closes a file descriptor in a platform-specific way +func closeFD(fd uint32) error { + return syscall.Close(syscall.Handle(fd)) +} \ No newline at end of file