diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-11-16 21:13:55 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-11-16 21:16:04 +0100 |
commit | de7c702ace45b8eeba7f4de8ecd9c85c80806264 (patch) | |
tree | bb6679e45f0463a4db86f69f2b5c27ad2dcc44a2 | |
parent | fc4f975a4de1917df9d0fe2aaf0e009428546fe2 (diff) |
device: only propagate roaming value before peer is referenced elsewhere
A peer.endpoint never becomes nil after being not-nil, so creation is
the only time we actually need to set this. This prevents a race from
when the variable is actually used elsewhere, and allows us to avoid an
expensive atomic.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r-- | device/uapi.go | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/device/uapi.go b/device/uapi.go index 87c5dd9..2306183 100644 --- a/device/uapi.go +++ b/device/uapi.go @@ -261,7 +261,9 @@ func (peer *ipcSetPeer) handlePostConfig() { if peer.Peer == nil || peer.dummy { return } - peer.disableRoaming = peer.device.net.brokenRoaming && peer.endpoint != nil + if peer.created { + peer.disableRoaming = peer.device.net.brokenRoaming && peer.endpoint != nil + } if peer.device.isUp() { peer.Start() if peer.pkaOn { |