tailscale/net
Andrew Dunham 286c6ce27c
net/dns/resolver: race UDP and TCP queries (#9544)
Instead of just falling back to making a TCP query to an upstream DNS
server when the UDP query returns a truncated query, also start a TCP
query in parallel with the UDP query after a given race timeout. This
ensures that if the upstream DNS server does not reply over UDP (or if
the response packet is blocked, or there's an error), we can still make
queries if the server replies to TCP queries.

This also adds a new package, util/race, to contain the logic required for
racing two different functions and returning the first non-error answer.

Updates tailscale/corp#14809

Signed-off-by: Andrew Dunham <andrew@du.nham.ca>
Change-Id: I4311702016c1093b1beaa31b135da1def6d86316
2023-10-03 16:26:38 -04:00
..
art net/art: allow non-pointers as values 2023-08-17 10:43:18 -07:00
connstats net/connstats: exclude traffic with internal Tailscale service (#7904) 2023-04-17 14:24:29 -07:00
dns net/dns/resolver: race UDP and TCP queries (#9544) 2023-10-03 16:26:38 -04:00
dnscache tstest: prepare for Clock API changes 2023-07-06 17:03:19 -04:00
dnsfallback net/dnsfallback: remove net/dnsfallback go:generate line 2023-09-29 18:36:12 -07:00
flowtrack all: update copyright and license headers 2023-01-27 15:36:29 -08:00
interfaces net/tsdial: be smarter about when to close SystemDial conns 2023-09-01 09:33:55 -07:00
memnet net/memnet: export the network name (#9111) 2023-08-28 11:43:51 -07:00
netaddr all: update copyright and license headers 2023-01-27 15:36:29 -08:00
netcheck net/netcheck,wgengine/magicsock: reduce coupling between netcheck and magicsock 2023-08-11 10:08:21 -07:00
neterror net/neterror, wgengine/magicsock: use UDP GSO and GRO on Linux (#7791) 2023-04-04 16:32:16 -07:00
netknob all: update copyright and license headers 2023-01-27 15:36:29 -08:00
netmon net/netmon: log when the gateway/self IP changes 2023-09-12 17:48:29 -04:00
netns net/{interfaces,netmon}: remove "interesting", EqualFiltered API 2023-08-29 11:57:30 -07:00
netstat net/{netns,netstat}: use new x/sys/cpu.IsBigEndian 2023-02-02 07:41:49 -08:00
netutil cmd/tailscale: refactor shared utility methods 2023-08-09 08:59:10 -07:00
packet net/packet: implement methods for rewriting v6 addresses 2023-10-02 11:13:27 -07:00
ping net/ping: fix ICMP echo code field to 0 2023-09-15 17:08:39 -07:00
portmapper net/portmapper: fix invalid UPnP metric name 2023-09-27 12:28:14 -04: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/dns: retry forwarder requests over TCP 2023-09-25 16:42:07 -04:00
speedtest all: update copyright and license headers 2023-01-27 15:36:29 -08:00
stun wgengine/magicsock, types/nettype, etc: finish ReadFromUDPAddrPort netip migration 2023-04-15 13:40:15 -07:00
tcpinfo net/tcpinfo: add package to allow fetching TCP information 2023-06-27 21:59:43 -04:00
tlsdial cmd/tailscale/cli: make netcheck run even if machine lacks TLS certs 2023-08-23 21:11:04 -07:00
tsaddr types/netmap: remove NetworkMap.{Addresses,MachineStatus} 2023-09-18 17:08:11 +01:00
tsdial types/netmap: remove NetworkMap.{Addresses,MachineStatus} 2023-09-18 17:08:11 +01:00
tshttpproxy net/tshttpproxy: don't proxy through ourselves 2023-03-29 17:09:45 -04:00
tstun net/tstun: remove unused function DefaultMTU() 2023-10-02 10:12:45 -07:00
wsconn net/wsconn: accept a remote addr string and plumb it through 2023-08-29 16:57:16 -07:00