Brad Fitzpatrick
b8594dc937
control/controlclient: fix deadlock in timeout+keepalive race
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-04-21 15:22:58 -07:00
wardn
d052586da7
cmd/taillogin: delete it
...
Signed-off-by: wardn <wardn@users.noreply.github.com>
2020-04-19 21:40:52 -07:00
David Anderson
108e3af76f
github: use Go 1.14 in CI.
...
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-04-19 14:46:24 -07:00
Brad Fitzpatrick
268d331cb5
wgengine/magicsock: prune key.Public-keyed on peer removals
...
Fixes #215
2020-04-18 08:48:01 -07:00
Brad Fitzpatrick
00d053e25a
wgengine/magicsock: fix slow memory leak as peer endpoints move around
...
Updates #215
2020-04-18 08:28:10 -07:00
Brad Fitzpatrick
7fc97c5493
wgengine/magicsock: use netaddr more
...
In prep for deleting from the ever-growing maps.
2020-04-17 15:15:42 -07:00
Brad Fitzpatrick
6fb30ff543
wgengine/magicsock: start using inet.af/netaddr a bit
2020-04-17 13:51:52 -07:00
David Anderson
42e62a7eb2
testy: fix clock initialization when Start is provided.
...
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-04-17 13:20:09 -07:00
David Anderson
ccfc4e0634
go.mod: bump wireguard-go version.
...
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-04-16 12:53:58 -07:00
David Anderson
afbfe4f217
wgengine: drop wireguard MTU to 1280 bytes.
...
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-04-14 16:36:28 -07:00
David Anderson
b925e18f70
tstime: hand-implement parseInt for specific needs of rfc3339 parsing.
...
Makes parsing 4.6x faster.
name old time/op new time/op delta
ParseInt-12 32.1ns ± 1% 6.9ns ± 2% -78.55% (p=0.000 n=10+9)
Signed-off-by: David Anderson <danderson@tailscale.com>
2020-04-14 12:36:55 -07:00
Avery Pennarun
dc9b39e3fb
wgengine/windows: use new winipcfg.Sync{Addresses,Routes} functions.
...
This avoids flushing and reloading the whole list of addresses and
routes whenever remote node information changes.
2020-04-13 13:20:20 -04:00
Brad Fitzpatrick
adf74c75ed
wgengine: also diagnose not-yet-rebooted system updates on Arch
2020-04-13 09:22:08 -07:00
Brad Fitzpatrick
3464114b88
logtail: add ParsePublicID that doesn't allocate
2020-04-13 08:54:35 -07:00
Brad Fitzpatrick
780deb9996
go.mod, go.sum: update go4.org/mem to its new home in its own module
...
Cleans up our go.sum, not that it really matters.
2020-04-11 14:00:48 -07:00
Brad Fitzpatrick
614eec174f
derp/derphttp: avoid endless reconnect race on failure
...
Originally from @stablebits (Dmitry Adamushko) in:
https://github.com/tailscale/tailscale/pull/264
2020-04-11 13:37:20 -07:00
Brad Fitzpatrick
347a926ac4
control/controlclient: add opt-in netmap verbose debugging env var
2020-04-11 09:22:33 -07:00
Brad Fitzpatrick
45f2b53aca
all: remove unnecessary trailing newlines in format patterns for consistency
...
And document on logger.Logf that it's unnecessary.
2020-04-11 08:35:34 -07:00
Brad Fitzpatrick
a7e7c7b548
wgengine/magicsock: close derp connections on rebind
...
Fixes #276
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-04-10 20:43:00 -07:00
Brad Fitzpatrick
614261d00d
wgengine/magicsock: reset AddrSet states on Rebind
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-04-10 20:27:35 -07:00
Brad Fitzpatrick
c0697e1feb
net/interfaces: add IsExpensive and up state to State
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-04-10 20:25:12 -07:00
Brad Fitzpatrick
a55c4217db
wgengine: diagnose why CreateTUN might've failed for users
...
Fixes #273
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-04-10 20:16:27 -07:00
Brad Fitzpatrick
3a3b64301e
wgengine: quiet some engine reconfig logging, make more consistent
...
Updates #282
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-04-10 13:53:01 -07:00
Dmitry Adamushko
806645ea0e
derp: prevent readFrame() from reading more than len(b) bytes.
...
Signed-off-by: Dmitry Adamushko <da@stablebits.net>
2020-04-10 08:56:23 -07:00
Dmitry Adamushko
f2c2d0de68
derp/derp_server: unregisterClient() for replaced client connections.
...
When unregistering a replaced client connection, move the
still-connected peers to the current client connecition. Inform
the peers that we've gone only when unregistering the active
client connection.
Signed-off-by: Dmitry Adamushko <da@stablebits.net>
2020-04-10 08:52:30 -07:00
Brad Fitzpatrick
39ae80a2e7
version: bump date
2020-04-10 08:23:36 -07:00
Brad Fitzpatrick
1ec27dbb5b
wgengine: remove an allocation in reconfig
...
Minor.
2020-04-10 08:22:13 -07:00
Brad Fitzpatrick
b24029717b
ipn: outdent some code in if that's statically always true
2020-04-10 07:52:30 -07:00
David Crawshaw
5b95aa81ea
wgengine: remove IpcSetOperation on LinkChange
...
This was only done occasionally, but was extremely disruptive
when done and is no longer necessary.
It used to be that when switching links, we had to immediately
generate handshakes to everyone we were communicating with to
punch a hole in any NAT we were talking through. (This ended up
not really working, because in the process we got rid of our
session keys and ended up having a futile conversation for many
seconds.)
Now we have DERP, our link change propogates to the other side
as a new list of endpoints, so they start spraying packets.
We will definitely get one thanks to DERP, which will cause us
to spray, opening any NAT we are behind.
The result is that for good connections, we don't trash session
keys and cause an interruption.
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-04-10 15:07:20 +10:00
Brad Fitzpatrick
fe149979e6
logpolicy: include Go version in version log
2020-04-09 14:46:19 -07:00
Brad Fitzpatrick
73249f8032
netcheck: aggregate spammy logging onto one concise line
2020-04-09 13:14:38 -07:00
Brad Fitzpatrick
922d9546bf
wgengine: don't allocate so much in userspaceEngine.getStatus
...
It was one of the top garbage producers on my phone.
It's slated to be deleted and replaced anyway, but this helps in the
meantime.
The go.sum changes look scary, but the new dep only adds 240 bytes to
the binary. The go.sum noise is just cmd/go being aggressive in
including a lot of stuff (which is being fixed in Go 1.15, for what I
understand). And I ran a go mod tidy, which added some too. (I had to
write a custom wrapper around go mod tidy because this mod tidy
normally breaks on tailscale.io/control being missing but referenced
in tests)
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-04-09 12:49:17 -07:00
David Crawshaw
6b2e29867e
controlclient: add auth key test
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-04-09 20:17:09 +10:00
David Crawshaw
f8b72d2b5b
cmd/tailscale: add up --authkey flag
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-04-09 20:17:09 +10:00
David Crawshaw
1747d099e9
ipn: add auth key
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-04-09 20:17:09 +10:00
David Crawshaw
3f087466f5
controlclient: add auth key
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-04-09 20:17:09 +10:00
David Crawshaw
22a0acff39
tailcfg: add auth key to RegisterRequest
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-04-09 20:17:09 +10:00
Sylvain Rabot
a279032998
cmd/mkpkg: fix missing default value for --depends
...
Signed-off-by: Sylvain Rabot <sylvain@abstraction.fr>
2020-04-08 12:07:07 -07:00
Brad Fitzpatrick
0f64d7f9cc
wgengine: remove a tiny allocation
...
Drop in the bucket compared to the larger issues, but noticed it
when looking at pprof.
2020-04-07 22:23:40 -07:00
Brad Fitzpatrick
59800138ff
bump wireguard dep
2020-04-07 10:02:34 -07:00
Brad Fitzpatrick
277fe84c6b
version: don't depend on goversion on ios
2020-04-07 09:28:09 -07:00
Brad Fitzpatrick
2776209e49
portlist: don't depend on osexec package on ios, even if it's unused
...
Continuation of 5bb14c07dc
.
The earlier commit provided the space savings (as the linker could see
through that osexec was unused at runtime), but it didn't clean up the
dep graph (from go list -json or godepgraph).
This removes the netstat.go file from the build too, just so the dep list
looks more reasonable.
2020-04-07 08:09:13 -07:00
Brad Fitzpatrick
5bb14c07dc
portlist: don't depend on tempfork/osexec on iOS, saves 90KB
...
This gives us 90KB more of memory on iOS, as it shrinks the
NetworkExtension binary by 90KB.
The netstat binary isn't available in the network extension anyway, so
no point pulling in the osexec package which'll just fail to find
netstat anyway.
2020-04-07 07:58:09 -07:00
Brad Fitzpatrick
ec0cd60fc3
portlist: fail earlier, more nicely on iOS
2020-04-06 20:11:24 -07:00
David Anderson
96b2f20c5b
types/logger: add Discard helper.
2020-04-06 19:15:19 -07:00
Dmitry Adamushko
44434fdc82
derp/derp_server: fixed unbalanced {register,unregister}Client() calls.
...
Signed-off-by: Dmitry Adamushko <da@stablebits.net>
2020-04-06 15:13:47 -07:00
Blake Gentry
e19287f60f
wgengine/magicsock: fix Conn docs type reference
...
The docs on magicsock.Conn stated that they implemented the
wireguard/device.Bind interface, yet this type does not exist. In
reality, the Conn type implements the wireguard/conn.Bind interface.
I also fixed a small typo in the same file.
Signed-off-by: Blake Gentry <blakesgentry@gmail.com>
2020-04-06 15:11:56 -07:00
Brad Fitzpatrick
71d6738333
tstime: change an Errorf+return to Fatalf in subtest
...
Forgot to git add this during review. Fail.
2020-04-06 08:20:15 -07:00
Brad Fitzpatrick
febdac0499
tstime: write Parse3339 parse that doesn't use time.Parse
...
It doesn't allocate and it's half the time of time.Parse (which
allocates), and 2/3rds the time of time.ParseInLocation (which
doesn't).
Go with a UTC time:
BenchmarkGoParse3339/Z-8 2200995 534 ns/op 0 B/op 0 allocs/op
BenchmarkGoParse3339/Z-8 2254816 554 ns/op 0 B/op 0 allocs/op
BenchmarkGoParse3339/Z-8 2159504 522 ns/op 0 B/op 0 allocs/op
Go allocates with a "-08:00" suffix instead of ending in "Z":
BenchmarkGoParse3339/TZ-8 1276491 884 ns/op 144 B/op 3 allocs/op
BenchmarkGoParse3339/TZ-8 1355858 942 ns/op 144 B/op 3 allocs/op
BenchmarkGoParse3339/TZ-8 1385484 911 ns/op 144 B/op 3 allocs/op
Go doesn't allocate if you use time.ParseInLocation, but then you need
to parse the string to find the location anyway, so might as well go
all the way (below).
BenchmarkGoParse3339InLocation-8 1912254 597 ns/op 0 B/op 0 allocs/op
BenchmarkGoParse3339InLocation-8 1980043 612 ns/op 0 B/op 0 allocs/op
BenchmarkGoParse3339InLocation-8 1891366 612 ns/op 0 B/op 0 allocs/op
Parsing RFC3339 ourselves, UTC:
BenchmarkParse3339/Z-8 3889220 307 ns/op 0 B/op 0 allocs/op
BenchmarkParse3339/Z-8 3718500 309 ns/op 0 B/op 0 allocs/op
BenchmarkParse3339/Z-8 3621231 303 ns/op 0 B/op 0 allocs/op
Parsing RFC3339 ourselves, with timezone (w/ *time.Location fetched
from sync.Map)
BenchmarkParse3339/TZ-8 3019612 418 ns/op 0 B/op 0 allocs/op
BenchmarkParse3339/TZ-8 2921618 401 ns/op 0 B/op 0 allocs/op
BenchmarkParse3339/TZ-8 3031671 408 ns/op 0 B/op 0 allocs/op
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-04-06 08:19:17 -07:00
Brad Fitzpatrick
02948d2c86
Dockerfile: add some usage docs, bump to Go 1.14
2020-04-06 07:57:47 -07:00