From 65fe0ba7b50928eff53e2750ff2d583e4a33eb7e Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Fri, 30 Aug 2024 21:07:15 -0700 Subject: [PATCH] wgengine/magicsock: fix panic regression from cryptokey routing change Fixes #13332 Updates tailscale/corp#20732 Change-Id: I30f12746844bf77f5a664bf8e8d8ebf2511a2b27 Signed-off-by: Brad Fitzpatrick --- wgengine/magicsock/magicsock.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/wgengine/magicsock/magicsock.go b/wgengine/magicsock/magicsock.go index 7b121d415..de6b13fc1 100644 --- a/wgengine/magicsock/magicsock.go +++ b/wgengine/magicsock/magicsock.go @@ -1089,7 +1089,13 @@ func (c *Conn) Send(buffs [][]byte, ep conn.Endpoint) error { metricSendDataNetworkDown.Add(n) return errNetworkDown } - return ep.(*endpoint).send(buffs) + if ep, ok := ep.(*endpoint); ok { + return ep.send(buffs) + } + // If it's not of type *endpoint, it's probably *lazyEndpoint, which means + // we don't actually know who the peer is and we're waiting for wireguard-go + // to switch the endpoint. See go/corp/20732. + return nil } var errConnClosed = errors.New("Conn closed")