tailscale/cmd
Brad Fitzpatrick 3d7fb6c21d derp/derphttp: fix race in mesh watcher
The derphttp client automatically reconnects upon failure.

RunWatchConnectionLoop called derphttp.Client.WatchConnectionChanges
once, but that wrapper method called the underlying
derp.Client.WatchConnectionChanges exactly once on derphttp.Client's
currently active connection. If there's a failure, we need to re-subscribe
upon all reconnections.

This removes the derphttp.Client.WatchConnectionChanges method, which
was basically impossible to use correctly, and changes it to be a
boolean field on derphttp.Client alongside MeshKey and IsProber. Then
it moves the call to the underlying derp.Client.WatchConnectionChanges
to derphttp's client connection code, so it's resubscribed on any
reconnect.

Some paranoia is then added to make sure people hold the API right,
not calling derphttp.Client.RunWatchConnectionLoop on an
already-started Client without having set the bool to true. (But still
auto-setting it to true if that's the first method that's been called
on that derphttp.Client, as is commonly the case, and prevents
existing code from breaking)

Fixes tailscale/corp#9916
Supercedes tailscale/tailscale#9719

Co-authored-by: Val <valerie@tailscale.com>
Co-authored-by: Irbe Krumina <irbe@tailscale.com>
Co-authored-by: Anton Tolchanov <anton@tailscale.com>
Signed-off-by: Brad Fitzpatrick <brad@danga.com>
2023-10-31 19:24:25 +00:00
..
addlicense all: update tools that manage copyright headers 2023-01-27 15:36:29 -08:00
cloner cmd/cloner: fix typo in test type's name 2023-09-30 10:18:18 -07:00
containerboot cmd/containerboot: revert to using tailscale up 2023-10-16 12:00:44 -07:00
derper derp/derphttp: fix race in mesh watcher 2023-10-31 19:24:25 +00:00
derpprobe prober: migrate to Prometheus metric library 2023-04-11 08:37:32 +01:00
dist cmd/dist,release/dist: add distsign signing hooks (#9070) 2023-08-24 14:36:47 -07:00
get-authkey all: use cmpx.Or where it made sense 2023-06-07 22:06:24 -07:00
gitops-pusher .github,cmd/gitops-pusher: update to checkout@v4 2023-09-04 15:12:57 -07:00
hello all: update copyright and license headers 2023-01-27 15:36:29 -08:00
k8s-operator cmd/k8s-operator: allow to install operator via helm (#9920) 2023-10-30 18:18:09 +00:00
mkmanifest cmd/mkmanifest, cmd/tailscale, cmd/tailscaled: remove Windows arm32 resources from OSS 2023-03-01 15:45:12 -07:00
mkpkg go.mod: upgrade nfpm to v2 (#8786) 2023-08-03 13:00:45 -07:00
mkversion version/mkversion: open-source version generation logic 2023-02-18 05:21:05 +00:00
nardump all: update copyright and license headers 2023-01-27 15:36:29 -08:00
netlogfmt go.mod: update github.com/go-json-experiment/json (#9508) 2023-09-21 14:19:27 -07:00
nginx-auth tailcfg,all: add and use Node.IsTagged() 2023-03-13 08:44:25 -07:00
pgproxy various: add golangci-lint, fix issues (#7905) 2023-04-17 18:38:24 -04:00
printdep cmd/printdep: print correct toolchain URL 2023-02-11 17:57:36 +00:00
proxy-to-grafana tailcfg,all: add and use Node.IsTagged() 2023-03-13 08:44:25 -07:00
sniproxy cmd/sniproxy: implement support for control configuration, multiple addresses 2023-10-31 12:19:17 -06:00
speedtest all: update copyright and license headers 2023-01-27 15:36:29 -08:00
ssh-auth-none-demo all: replace deprecated ioutil references 2023-08-23 23:53:19 +01:00
stunc all: update copyright and license headers 2023-01-27 15:36:29 -08:00
sync-containers all: adjust some build tags for plan9 2023-08-24 15:42:35 -07:00
tailscale ipn: add user pref for running web client 2023-10-31 10:34:56 -07:00
tailscaled ipn/ipnlocal,client/web: add web client to tailscaled 2023-10-31 13:15:07 -04:00
testcontrol all: update copyright and license headers 2023-01-27 15:36:29 -08:00
testwrapper tstest, tstest/integration, github/workflows: shard integration tests 2023-10-16 20:09:24 -07:00
tsconnect cmd/tsconnect/wasm: add missing tstun.Wrapper.Start call 2023-10-18 17:24:02 -07:00
tsshd all: update copyright and license headers 2023-01-27 15:36:29 -08:00
viewer cmd/cloner: add regression test for slice nil/empty semantics 2023-09-29 19:00:40 -07:00