From 703c606af566c34445ccb8f7b995183918e1b6aa Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 16 Mar 2026 14:31:16 -0700 Subject: [PATCH] Handle no chainId case --- main.go | 2 +- olm/peer.go | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index 2bf8dcd..6ea7d11 100644 --- a/main.go +++ b/main.go @@ -190,7 +190,7 @@ func runOlmMainWithArgs(ctx context.Context, cancel context.CancelFunc, signalCt os.Exit(0) } - olmVersion := "version_replaceme" + olmVersion := "1.4.3" if showVersion { fmt.Println("Olm version " + olmVersion) os.Exit(0) diff --git a/olm/peer.go b/olm/peer.go index 4a9a54c..fca47b5 100644 --- a/olm/peer.go +++ b/olm/peer.go @@ -42,8 +42,16 @@ func (o *Olm) handleWgPeerAdd(msg websocket.WSMessage) { delete(o.stopPeerSends, siteConfigMsg.ChainId) } o.peerSendMu.Unlock() + } else { + // stop all of the stopPeerSends + o.peerSendMu.Lock() + for _, stop := range o.stopPeerSends { + stop() + } + o.stopPeerSends = make(map[string]func()) + o.peerSendMu.Unlock() } - + if siteConfigMsg.PublicKey == "" { logger.Warn("Skipping add-peer for site %d (%s): no public key available (site may not be connected)", siteConfigMsg.SiteId, siteConfigMsg.Name) return @@ -190,7 +198,7 @@ func (o *Olm) handleWgPeerRelay(msg websocket.WSMessage) { } primaryRelay, err := util.ResolveDomainUpstream(relayData.RelayEndpoint, o.tunnelConfig.PublicDNS) - + if err != nil { logger.Error("Failed to resolve primary relay endpoint: %v", err) return @@ -231,7 +239,7 @@ func (o *Olm) handleWgPeerUnrelay(msg websocket.WSMessage) { } primaryRelay, err := util.ResolveDomainUpstream(relayData.Endpoint, o.tunnelConfig.PublicDNS) - + if err != nil { logger.Warn("Failed to resolve primary relay endpoint: %v", err) } @@ -283,6 +291,14 @@ func (o *Olm) handleWgPeerHolepunchAddSite(msg websocket.WSMessage) { // pending entry so the site can be re-triggered if needed in the future. delete(o.jitPendingSites, handshakeData.SiteId) o.peerSendMu.Unlock() + } else { + // Stop all of the stopPeerInits + o.peerSendMu.Lock() + for _, stop := range o.stopPeerInits { + stop() + } + o.stopPeerInits = make(map[string]func()) + o.peerSendMu.Unlock() } // Get existing peer from PeerManager