mirror of
https://github.com/fosrl/olm.git
synced 2026-02-08 14:06:41 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4850b1b332 | ||
|
|
1ff74f7173 |
@@ -36,7 +36,7 @@ func (o *Olm) handleConnect(msg websocket.WSMessage) {
|
||||
|
||||
var wgData WgData
|
||||
|
||||
if o.connected {
|
||||
if o.registered {
|
||||
logger.Info("Already connected. Ignoring new connection request.")
|
||||
return
|
||||
}
|
||||
@@ -208,7 +208,7 @@ func (o *Olm) handleConnect(msg websocket.WSMessage) {
|
||||
|
||||
o.apiServer.SetRegistered(true)
|
||||
|
||||
o.connected = true
|
||||
o.registered = true
|
||||
|
||||
// Start ping monitor now that we are registered and connected
|
||||
o.websocket.StartPingMonitor()
|
||||
|
||||
@@ -157,7 +157,7 @@ func (o *Olm) handleWgPeerUpdateData(msg websocket.WSMessage) {
|
||||
func (o *Olm) handleSync(msg websocket.WSMessage) {
|
||||
logger.Debug("Received sync message: %v", msg.Data)
|
||||
|
||||
if !o.connected {
|
||||
if !o.registered {
|
||||
logger.Warn("Not connected, ignoring sync request")
|
||||
return
|
||||
}
|
||||
|
||||
14
olm/olm.go
14
olm/olm.go
@@ -8,7 +8,6 @@ import (
|
||||
_ "net/http/pprof"
|
||||
"os"
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/fosrl/newt/bind"
|
||||
@@ -32,7 +31,7 @@ type Olm struct {
|
||||
privateKey wgtypes.Key
|
||||
logFile *os.File
|
||||
|
||||
connected bool
|
||||
registered bool
|
||||
tunnelRunning bool
|
||||
|
||||
uapiListener net.Listener
|
||||
@@ -386,10 +385,10 @@ func (o *Olm) StartTunnel(config TunnelConfig) {
|
||||
|
||||
o.apiServer.SetConnectionStatus(true)
|
||||
|
||||
if o.connected {
|
||||
if o.registered {
|
||||
o.websocket.StartPingMonitor()
|
||||
|
||||
logger.Debug("Already connected, skipping registration")
|
||||
logger.Debug("Already registered, skipping registration")
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
@@ -615,7 +614,7 @@ func (o *Olm) StopTunnel() error {
|
||||
}
|
||||
|
||||
// Reset the running state BEFORE cleanup to prevent callbacks from accessing nil pointers
|
||||
o.connected = false
|
||||
o.registered = false
|
||||
o.tunnelRunning = false
|
||||
|
||||
// Cancel the tunnel context if it exists
|
||||
@@ -739,9 +738,6 @@ func (o *Olm) SetPowerMode(mode string) error {
|
||||
|
||||
logger.Info("Switching to low power mode")
|
||||
|
||||
// Mark as disconnected so we re-register on reconnect
|
||||
o.connected = false
|
||||
|
||||
// Update API server connection status
|
||||
if o.apiServer != nil {
|
||||
o.apiServer.SetConnectionStatus(false)
|
||||
|
||||
10
olm/olm_unix.go
Normal file
10
olm/olm_unix.go
Normal file
@@ -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))
|
||||
}
|
||||
10
olm/olm_windows.go
Normal file
10
olm/olm_windows.go
Normal file
@@ -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))
|
||||
}
|
||||
Reference in New Issue
Block a user