The easiest, most secure way to use WireGuard and 2FA.
Go to file
Denton Gentry 0aa55bffce magicsock: test error case in derpWriteChanOfAddr
In derpWriteChanOfAddr when we call derphttp.NewRegionClient(),
there is a check of whether the connection is already errored and
if so it returns before grabbing the lock. The lock might already
be held and would be a deadlock.

This corner case is not being reliably exercised by other tests.
This shows up in code coverage reports, the lines of code in
derpWriteChanOfAddr are alternately added and subtracted from
code coverage.

Add a test to specifically exercise this code path, and verify that
it doesn't deadlock.

This is the best tradeoff I could come up with:
+ the moment code calls Err() to check if there is an error, we
  grab the lock to make sure it would deadlock if it tries to grab
  the lock itself.
+ if a new call to Err() is added in this code path, only the
  first one will be covered and the rest will not be tested.
+ this test doesn't verify whether code is checking for Err() in
  the right place, which ideally I guess it would.

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
2021-01-12 04:29:28 -08:00
.github Cache go modules. 2021-01-07 21:34:43 -08:00
atomicfile atomicfile: don't Chmod on windows 2020-07-15 12:31:40 -07:00
cmd wgengine: on TCP connect fail/timeout, log some clues about why it failed 2021-01-11 22:09:09 -08:00
control/controlclient ipn: only send services in Hostinfo if Tailnet has opted-in to services collection (#1107) 2021-01-11 17:24:32 -05:00
derp net/dnscache: work on IPv6-only hosts (again) 2021-01-06 19:53:13 -08:00
disco wgengine/magicsock: run test DERP in mode where only disco packets allowed 2020-07-16 12:58:35 -07:00
internal all: replace wgcfg.IP and wgcfg.CIDR with netaddr types 2020-12-28 13:00:42 -08:00
ipn all: adjust Unix permissions for those without umasks 2021-01-11 19:24:41 -08:00
log log/filelogger: move our Windows disk file writing+rotation package here 2020-10-29 14:59:44 -07:00
logpolicy cmd/tailscaled, logpolicy, logtail: support log levels 2020-12-21 12:59:33 -08:00
logtail all: adjust Unix permissions for those without umasks 2021-01-11 19:24:41 -08:00
metrics metrics: add LabelMap.GetFloat 2020-07-19 12:31:12 -07:00
net net/packet: add TCPFlag type and some more constants 2021-01-11 22:09:09 -08:00
paths paths, cmd/tailscaled: on Windows, don't try to migrate from legacy relay.conf 2020-07-13 08:59:54 -07:00
portlist tempfork/osexec: remove old fork of os/exec 2020-11-18 08:42:43 -08:00
safesocket all: adjust Unix permissions for those without umasks 2021-01-11 19:24:41 -08:00
scripts Allow 2021 in LICENSE header. 2021-01-08 10:23:32 -08:00
smallzstd smallzstd: new package that constructs zstd small encoders/decoders. 2020-07-02 16:13:06 -07:00
syncs Fix receiver in order to be consistent: syncs.WaitGroupChan 2020-11-24 17:20:34 -08:00
tailcfg ipn: only send services in Hostinfo if Tailnet has opted-in to services collection (#1107) 2021-01-11 17:24:32 -05:00
tempfork/pprof go.mod: upgrade staticcheck to 0.1.0 2020-12-14 14:01:29 -08:00
tsconst net/netns: add windows support. 2020-09-14 16:28:49 -07:00
tstest ipn: close logger at the end of TestLocalLogLines 2021-01-08 17:10:48 -08:00
tstime tstime: add Parse3339B, for byte slices 2020-11-19 14:47:11 -08:00
tsweb tsweb: add an endpoint to manually trigger a GC. 2020-12-08 16:49:42 -08:00
types wgengine: quiet some wireguard-go logging 2021-01-08 17:10:48 -08:00
util cmd/tailscale: change formatting of "tailscale status" 2021-01-10 12:11:22 -08:00
version version: new version for a new year 2021-01-04 08:58:05 -08:00
wgengine magicsock: test error case in derpWriteChanOfAddr 2021-01-12 04:29:28 -08:00
.gitattributes .gitattributes: add a smudge filter for go.mod. 2020-02-19 20:02:02 -05:00
.gitignore add nix-shell boilerplate (#1028) 2020-12-29 12:17:03 -05:00
api.md API.md: revise documentation to be more consistent 2021-01-05 14:33:28 -05:00
AUTHORS Move Linux client & common packages into a public repo. 2020-02-09 09:32:57 -08:00
build_dist.sh build_dist: fix after version refactor. 2020-11-03 14:40:09 -08:00
CODE_OF_CONDUCT.md Add a code of conduct. 2020-02-10 22:16:30 -08:00
Dockerfile Dockerfile: add big warning banner 2021-01-11 19:23:47 -08:00
go.mod wgengine/magicsock: drop netaddr.IPPort cache 2021-01-11 13:23:04 -08:00
go.sum wgengine/magicsock: drop netaddr.IPPort cache 2021-01-11 13:23:04 -08:00
LICENSE Move Linux client & common packages into a public repo. 2020-02-09 09:32:57 -08:00
Makefile Makefile: remove tsshd from depaware 2020-09-11 11:09:32 -07:00
PATENTS Move Linux client & common packages into a public repo. 2020-02-09 09:32:57 -08:00
README.md version: use OSS repo's version when building. 2020-10-28 16:17:21 -07:00
SECURITY.md Add a SECURITY.md for vulnerability reports. 2020-02-11 10:26:41 -08:00
shell.nix add nix-shell boilerplate (#1028) 2020-12-29 12:17:03 -05:00
VERSION.txt VERSION.txt: this is now 1.3.x. 2020-11-03 15:09:02 -08:00

Tailscale

https://tailscale.com

Private WireGuard® networks made easy

Overview

This repository contains all the open source Tailscale client code and the tailscaled daemon and tailscale CLI tool. The tailscaled daemon runs primarily on Linux; it also works to varying degrees on FreeBSD, OpenBSD, Darwin, and Windows.

The Android app is at https://github.com/tailscale/tailscale-android

Using

We serve packages for a variety of distros at https://pkgs.tailscale.com .

Other clients

The macOS, iOS, and Windows clients use the code in this repository but additionally include small GUI wrappers that are not open source.

Building

go install tailscale.com/cmd/tailscale{,d}

If you're packaging Tailscale for distribution, use build_dist.sh instead, to burn commit IDs and version info into the binaries:

./build_dist.sh tailscale.com/cmd/tailscale
./build_dist.sh tailscale.com/cmd/tailscaled

If your distro has conventions that preclude the use of build_dist.sh, please do the equivalent of what it does in your distro's way, so that bug reports contain useful version information.

We only guarantee to support the latest Go release and any Go beta or release candidate builds (currently Go 1.15) in module mode. It might work in earlier Go versions or in GOPATH mode, but we're making no effort to keep those working.

Bugs

Please file any issues about this code or the hosted service on the issue tracker.

Contributing

PRs welcome! But please file bugs. Commit messages should reference bugs.

We require Developer Certificate of Origin Signed-off-by lines in commits.

About Us

We are apenwarr, bradfitz, crawshaw, danderson, dfcarney, josharian from Tailscale Inc. You can learn more about us from our website.

WireGuard is a registered trademark of Jason A. Donenfeld.