summaryrefslogtreecommitdiffhomepage
path: root/device/uapi.go
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-11-16 21:13:55 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2021-11-16 21:16:04 +0100
commitde7c702ace45b8eeba7f4de8ecd9c85c80806264 (patch)
treebb6679e45f0463a4db86f69f2b5c27ad2dcc44a2 /device/uapi.go
parentfc4f975a4de1917df9d0fe2aaf0e009428546fe2 (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>
Diffstat (limited to 'device/uapi.go')
-rw-r--r--device/uapi.go4
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 {