You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/net
Andrew Dunham 4cb1bfee44 net/netcheck: improve determinism in hairpinning test
If multiple Go channels have a value (or are closed), receiving from
them all in a select will nondeterministically return one of the two
arms. In this case, it's possible that the hairpin check timer will have
expired between when we start checking and before we check at all, but
the hairpin packet has already been received. In such cases, we'd
nondeterministically set report.HairPinning.

Instead, check if we have a value in our results channel first, then
select on the value and timeout channel after. Also, add a test that
catches this particular failure.

Fixes #1795

Change-Id: I842ab0bd38d66fabc6cabf2c2c1bb9bd32febf35
Signed-off-by: Andrew Dunham <andrew@du.nham.ca>
3 years ago
..
connstats net/connstats: fix ticker in NewStatistics (#7225) 3 years ago
dns various: pass logger.Logf through to more places 3 years ago
dnscache tstest: add method to Replace values for tests 3 years ago
dnsfallback various: pass logger.Logf through to more places 3 years ago
flowtrack all: update copyright and license headers 3 years ago
interfaces net/interfaces: also allow link-local for AzureAppServices. 3 years ago
memnet net/memnet: rename from net/nettest 3 years ago
netaddr all: update copyright and license headers 3 years ago
netcheck net/netcheck: improve determinism in hairpinning test 3 years ago
neterror all: update copyright and license headers 3 years ago
netknob all: update copyright and license headers 3 years ago
netns net/interfaces, net/netns: add node attributes to control default interface getting and binding 3 years ago
netstat net/{netns,netstat}: use new x/sys/cpu.IsBigEndian 3 years ago
netutil all: replace /kb/ links with /s/ equivalents 3 years ago
packet net/packet: add checksum update tests 3 years ago
ping all: update copyright and license headers 3 years ago
portmapper sockstats: switch label to enum 3 years ago
proxymux all: update copyright and license headers 3 years ago
routetable net/routetable: include unknown flags in the routetable doctor output 3 years ago
socks5 net/socks5: add password auth support 3 years ago
sockstats net/sockstats: export cellular-only clientmetrics 3 years ago
speedtest all: update copyright and license headers 3 years ago
stun all: use Go 1.20's bytes.Clone 3 years ago
tlsdial health, net/tlsdial: add healthcheck for self-signed cert 3 years ago
tsaddr all: replace /kb/ links with /s/ equivalents 3 years ago
tsdial all: update copyright and license headers 3 years ago
tshttpproxy all: use tstest.Replace more 3 years ago
tstun net/tstun: use p.Buffer() in more places 3 years ago
wsconn all: update copyright and license headers 3 years ago