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>
2023-03-24 12:01:23 -04:00
..
connstats net/connstats: fix ticker in NewStatistics (#7225) 2023-02-09 01:24:52 -08:00
dns various: pass logger.Logf through to more places 2023-03-12 12:38:38 -04:00
dnscache tstest: add method to Replace values for tests 2023-03-03 17:02:33 -08:00
dnsfallback various: pass logger.Logf through to more places 2023-03-12 12:38:38 -04:00
flowtrack all: update copyright and license headers 2023-01-27 15:36:29 -08:00
interfaces net/interfaces: also allow link-local for AzureAppServices. 2023-03-20 13:40:38 -07:00
memnet net/memnet: rename from net/nettest 2023-01-30 13:03:32 -08:00
netaddr all: update copyright and license headers 2023-01-27 15:36:29 -08:00
netcheck net/netcheck: improve determinism in hairpinning test 2023-03-24 12:01:23 -04:00
neterror all: update copyright and license headers 2023-01-27 15:36:29 -08:00
netknob all: update copyright and license headers 2023-01-27 15:36:29 -08:00
netns net/interfaces, net/netns: add node attributes to control default interface getting and binding 2023-02-08 13:15:10 -08:00
netstat net/{netns,netstat}: use new x/sys/cpu.IsBigEndian 2023-02-02 07:41:49 -08:00
netutil all: replace /kb/ links with /s/ equivalents 2023-03-13 14:21:15 -07:00
packet net/packet: add checksum update tests 2023-03-23 16:54:12 -07:00
ping all: update copyright and license headers 2023-01-27 15:36:29 -08:00
portmapper sockstats: switch label to enum 2023-03-06 15:54:35 -08:00
proxymux all: update copyright and license headers 2023-01-27 15:36:29 -08:00
routetable net/routetable: include unknown flags in the routetable doctor output 2023-02-10 15:54:31 -08:00
socks5 net/socks5: add password auth support 2023-03-05 14:08:34 -08:00
sockstats net/sockstats: export cellular-only clientmetrics 2023-03-20 17:02:39 -07:00
speedtest all: update copyright and license headers 2023-01-27 15:36:29 -08:00
stun all: use Go 1.20's bytes.Clone 2023-02-01 17:39:18 -08:00
tlsdial health, net/tlsdial: add healthcheck for self-signed cert 2023-02-01 23:17:41 -05:00
tsaddr all: replace /kb/ links with /s/ equivalents 2023-03-13 14:21:15 -07:00
tsdial all: update copyright and license headers 2023-01-27 15:36:29 -08:00
tshttpproxy all: use tstest.Replace more 2023-03-04 12:24:55 -08:00
tstun net/tstun: use p.Buffer() in more places 2023-03-23 16:54:12 -07:00
wsconn all: update copyright and license headers 2023-01-27 15:36:29 -08:00