diff options
author | Josh Bleecher Snyder <josh@tailscale.com> | 2020-12-14 15:28:52 -0800 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-01-07 14:49:44 +0100 |
commit | 63066ce4062a85224821ce302e3eb8c34e95a658 (patch) | |
tree | f6945216e1b48bc5404f612cdcc5564b12e93aae /device/uapi.go | |
parent | e1fa1cc5560020e67d33aa7e74674853671cf0a0 (diff) |
device: fix persistent_keepalive_interval data races
Co-authored-by: David Anderson <danderson@tailscale.com>
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
Diffstat (limited to 'device/uapi.go')
-rw-r--r-- | device/uapi.go | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/device/uapi.go b/device/uapi.go index c0e522b..3f26607 100644 --- a/device/uapi.go +++ b/device/uapi.go @@ -86,7 +86,7 @@ func (device *Device) IpcGetOperation(socket *bufio.Writer) error { send(fmt.Sprintf("last_handshake_time_nsec=%d", nano)) send(fmt.Sprintf("tx_bytes=%d", atomic.LoadUint64(&peer.stats.txBytes))) send(fmt.Sprintf("rx_bytes=%d", atomic.LoadUint64(&peer.stats.rxBytes))) - send(fmt.Sprintf("persistent_keepalive_interval=%d", peer.persistentKeepaliveInterval)) + send(fmt.Sprintf("persistent_keepalive_interval=%d", atomic.LoadUint32(&peer.persistentKeepaliveInterval))) for _, ip := range device.allowedips.EntriesForPeer(peer) { send("allowed_ip=" + ip.String()) @@ -333,8 +333,7 @@ func (device *Device) IpcSetOperation(r io.Reader) error { return &IPCError{ipc.IpcErrorInvalid} } - old := peer.persistentKeepaliveInterval - peer.persistentKeepaliveInterval = uint16(secs) + old := atomic.SwapUint32(&peer.persistentKeepaliveInterval, uint32(secs)) // send immediate keepalive if we're turning it on and before it wasn't on |