tailscale/ipn
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
..
ipnlocal ipn/ipnlocal: do not process old status messages received out of order 2022-03-26 20:23:50 -07:00
ipnserver all: use any instead of interface{} 2022-03-17 11:35:09 -07:00
ipnstate ipn/ipnstate: put SSH Host Keys in ipnstate.PeerStatus 2022-03-25 12:14:39 -07:00
localapi client/tailscale, cmd/tailscale, localapi: add 'tailscale nc' 2022-03-24 10:28:53 -07:00
policy ipn/policy: treat DNS service as interesting so it's not filtered out 2021-12-03 12:55:54 -08:00
store ipn/store: [TestNewStore] do not use an empty file 2022-02-28 18:26:24 -08:00
backend.go ipn: use key.NodePublic instead of tailcfg.NodeKey 2021-11-01 20:32:10 -07:00
doc.go Move Linux client & common packages into a public repo. 2020-02-09 09:32:57 -08:00
fake_test.go ipn{,/ipnlocal}, cmd/tailscale/cli: don't check pref reverts on initial up 2021-04-18 08:12:18 -07:00
handle.go ipn: another controlplane synonym 2021-07-13 08:22:10 -07:00
message_test.go all: use any instead of interface{} 2022-03-17 11:35:09 -07:00
message.go ipn: don't log IPN messages that may contain an authkey. 2021-09-22 20:32:49 -07:00
prefs_clone.go wgengine/netstack: add an SSH server experiment 2022-01-24 19:14:13 -08:00
prefs_test.go cmd/tailscale/cli, ipn: move exit node IP parsing and validation from cli into prefs. 2022-03-10 10:51:05 -07:00
prefs.go all: use any instead of interface{} 2022-03-17 11:35:09 -07:00
store.go ipn/store: add common package for instantiating ipn.StateStores 2022-02-28 13:23:33 -08:00