wgengine: fix TSMP/ICMP callback leak

Fixes #18112

Change-Id: I85d5c482b01673799d51faeb6cb0579903597502
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
pull/18073/merge
Brad Fitzpatrick 23 hours ago committed by Brad Fitzpatrick
parent 536188c1b5
commit b8c58ca7c1

@ -451,6 +451,7 @@ func NewUserspaceEngine(logf logger.Logf, conf Config) (_ Engine, reterr error)
cb := e.pongCallback[pong.Data] cb := e.pongCallback[pong.Data]
e.logf("wgengine: got TSMP pong %02x, peerAPIPort=%v; cb=%v", pong.Data, pong.PeerAPIPort, cb != nil) e.logf("wgengine: got TSMP pong %02x, peerAPIPort=%v; cb=%v", pong.Data, pong.PeerAPIPort, cb != nil)
if cb != nil { if cb != nil {
delete(e.pongCallback, pong.Data)
go cb(pong) go cb(pong)
} }
} }
@ -464,6 +465,7 @@ func NewUserspaceEngine(logf logger.Logf, conf Config) (_ Engine, reterr error)
// We didn't swallow it, so let it flow to the host. // We didn't swallow it, so let it flow to the host.
return false return false
} }
delete(e.icmpEchoResponseCallback, idSeq)
e.logf("wgengine: got diagnostic ICMP response %02x", idSeq) e.logf("wgengine: got diagnostic ICMP response %02x", idSeq)
go cb() go cb()
return true return true

Loading…
Cancel
Save