tailscale/ipn/ipnlocal
Maisem Ali 6fecc16c3b ipn/ipnlocal: do not process old status messages received out of order
When `setWgengineStatus` is invoked concurrently from multiple
goroutines, it is possible that the call invoked with a newer status is
processed before a call with an older status. e.g. a status that has
endpoints might be followed by a status without endpoints. This causes
unnecessary work in the engine and can result in packet loss.

This patch adds an `AsOf time.Time` field to the status to specifiy when the
status was calculated, which later allows `setWgengineStatus` to ignore
any status messages it receives that are older than the one it has
already processed.

Updates tailscale/corp#2579

Signed-off-by: Maisem Ali <maisem@tailscale.com>
2022-03-26 20:23:50 -07:00
..
dnsconfig_test.go ipnlocal, net/{dns,tsaddr,tstun}, wgengine: support MagicDNS on IPv6 2022-01-04 14:37:22 -08:00
local_test.go ipn/store: add common package for instantiating ipn.StateStores 2022-02-28 13:23:33 -08:00
local.go ipn/ipnlocal: do not process old status messages received out of order 2022-03-26 20:23:50 -07:00
loglines_test.go ipn/store: add common package for instantiating ipn.StateStores 2022-02-28 13:23:33 -08:00
peerapi_h2c.go ipn/ipnlocal: add HTTP/2 h2c server support to peerapi on non-mobile platforms 2021-12-06 16:39:14 -08:00
peerapi_macios_ext.go net/tsdial: move macOS/iOS peerapi sockopt logic from LocalBackend 2021-12-01 12:55:31 -08:00
peerapi_test.go ipn/ipnlocal: run peerapi even if Taildrop storage not configured 2021-12-01 16:45:09 -08:00
peerapi.go all: use any instead of interface{} 2022-03-17 11:35:09 -07:00
ssh_stub.go ssh: make it build on darwin 2022-02-24 13:00:45 -08:00
ssh_test.go ipn/ipnlocal: generate tailscaled-owned SSH keys as needed 2022-02-24 12:15:57 -08:00
ssh.go all: use any instead of interface{} 2022-03-17 11:35:09 -07:00
state_test.go ipn/ipnlocal: do not process old status messages received out of order 2022-03-26 20:23:50 -07:00