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