wgengine/magicsock: fix rare shutdown race in test.

Signed-off-by: David Anderson <danderson@tailscale.com>
pull/2744/head
David Anderson 3 years ago committed by Dave Anderson
parent 97693f2e42
commit fe2f89deab

@ -3208,7 +3208,9 @@ func ippDebugString(ua netaddr.IPPort) string {
} }
// discoEndpoint is a wireguard/conn.Endpoint that picks the best // discoEndpoint is a wireguard/conn.Endpoint that picks the best
// available path to communicate with a peer. // available path to communicate with a peer, based on network
// conditions and what the peer supports. In particular, despite the
// name, an endpoint can support DERP only.
type discoEndpoint struct { type discoEndpoint struct {
// atomically accessed; declared first for alignment reasons // atomically accessed; declared first for alignment reasons
lastRecv mono.Time lastRecv mono.Time

@ -290,11 +290,19 @@ func meshStacks(logf logger.Logf, mutateNetmap func(idx int, nm *netmap.NetworkM
m.conn.UpdatePeers(peerSet) m.conn.UpdatePeers(peerSet)
wg, err := nmcfg.WGCfg(nm, logf, netmap.AllowSingleHosts, "") wg, err := nmcfg.WGCfg(nm, logf, netmap.AllowSingleHosts, "")
if err != nil { if err != nil {
if ctx.Err() != nil {
// shutdown race, don't care.
return
}
// We're too far from the *testing.T to be graceful, // We're too far from the *testing.T to be graceful,
// blow up. Shouldn't happen anyway. // blow up. Shouldn't happen anyway.
panic(fmt.Sprintf("failed to construct wgcfg from netmap: %v", err)) panic(fmt.Sprintf("failed to construct wgcfg from netmap: %v", err))
} }
if err := m.Reconfig(wg); err != nil { if err := m.Reconfig(wg); err != nil {
if ctx.Err() != nil {
// shutdown race, don't care.
return
}
panic(fmt.Sprintf("device reconfig failed: %v", err)) panic(fmt.Sprintf("device reconfig failed: %v", err))
} }
} }

Loading…
Cancel
Save