Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
--- /dev/null
+/* SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) 2020 WireGuard LLC. All Rights Reserved.
+ */
+
+package device
+
+func (device *Device) DisableSomeRoamingForBrokenMobileSemantics() {
+ device.peers.RLock()
+ for _, peer := range device.peers.keyMap {
+ peer.Lock()
+ defer peer.Unlock()
+ peer.disableRoaming = peer.endpoint != nil
+ }
+ device.peers.RUnlock()
+}
\ No newline at end of file
device *Device
endpoint conn.Endpoint
persistentKeepaliveInterval uint16
+ disableRoaming bool
// These fields are accessed with atomic operations, which must be
// 64-bit aligned even on 32-bit platforms. Go guarantees that an
peer.ZeroAndFlushAll()
}
-var RoamingDisabled bool
func (peer *Peer) SetEndpointFromPacket(endpoint conn.Endpoint) {
- if RoamingDisabled {
+ if peer.disableRoaming {
return
}
peer.Lock()