From df1c2c18e0910320c5a410d16086efdd45cd83fe Mon Sep 17 00:00:00 2001 From: Owen Date: Wed, 10 Dec 2025 14:06:36 -0500 Subject: [PATCH] Small adjustments --- olm/olm.go | 9 ++++++++- peers/monitor/monitor.go | 21 ++++++++++++--------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/olm/olm.go b/olm/olm.go index becd514..494ac02 100644 --- a/olm/olm.go +++ b/olm/olm.go @@ -471,7 +471,7 @@ func StartTunnel(config TunnelConfig) { // Get existing peer from PeerManager existingPeer, exists := peerManager.GetPeer(updateData.SiteId) if !exists { - logger.Error("Peer with site ID %d not found", updateData.SiteId) + logger.Warn("Peer with site ID %d not found", updateData.SiteId) return } @@ -785,6 +785,13 @@ func StartTunnel(config TunnelConfig) { return } + // Get existing peer from PeerManager + _, exists := peerManager.GetPeer(handshakeData.SiteId) + if exists { + logger.Warn("Peer with site ID %d already added", handshakeData.SiteId) + return + } + exitNode := holepunch.ExitNode{ Endpoint: handshakeData.ExitNode.Endpoint, PublicKey: handshakeData.ExitNode.PublicKey, diff --git a/peers/monitor/monitor.go b/peers/monitor/monitor.go index 5821ff9..6c2e77b 100644 --- a/peers/monitor/monitor.go +++ b/peers/monitor/monitor.go @@ -191,15 +191,12 @@ func (pm *PeerMonitor) AddPeer(siteID int, endpoint string, holepunchEndpoint st // update holepunch endpoint for a peer func (pm *PeerMonitor) UpdateHolepunchEndpoint(siteID int, endpoint string) { - go func() { - // Short delay to allow WireGuard peer reconfiguration to complete - // The NAT mapping refresh is handled separately by TriggerHolePunch in olm.go - time.Sleep(500 * time.Millisecond) - pm.mutex.Lock() - defer pm.mutex.Unlock() - pm.holepunchEndpoints[siteID] = endpoint - logger.Debug("Updated holepunch endpoint for site %d to %s", siteID, endpoint) - }() + // Short delay to allow WireGuard peer reconfiguration to complete + // The NAT mapping refresh is handled separately by TriggerHolePunch in olm.go + pm.mutex.Lock() + defer pm.mutex.Unlock() + pm.holepunchEndpoints[siteID] = endpoint + logger.Debug("Updated holepunch endpoint for site %d to %s", siteID, endpoint) } // RapidTestPeer performs a rapid connectivity test for a newly added peer. @@ -297,6 +294,12 @@ func (pm *PeerMonitor) RemovePeer(siteID int) { pm.removePeerUnlocked(siteID) } +func (pm *PeerMonitor) RemoveHolepunchEndpoint(siteID int) { + pm.mutex.Lock() + defer pm.mutex.Unlock() + delete(pm.holepunchEndpoints, siteID) +} + // Start begins monitoring all peers func (pm *PeerMonitor) Start() { pm.mutex.Lock()