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/dns
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
9 months ago
..
publicdns net/dns/publicdns: update Quad9 addresses and references 10 months ago
recursive all: use Go 1.21 slices, maps instead of x/exp/{slices,maps} 11 months ago
resolvconffile all: update to Go 1.20, use strings.CutPrefix/Suffix instead of our fork 1 year ago
resolver net/dns/resolver: race UDP and TCP queries (#9544) 9 months ago
config.go all: update copyright and license headers 1 year ago
debian_resolvconf.go all: update copyright and license headers 1 year ago
direct.go net/dns: overwrite /tmp/resolv.conf on gokrazy 11 months ago
direct_linux.go all: update copyright and license headers 1 year ago
direct_notlinux.go all: update copyright and license headers 1 year ago
direct_test.go all: update copyright and license headers 1 year ago
flush_default.go all: update copyright and license headers 1 year ago
flush_windows.go all: update copyright and license headers 1 year ago
ini.go all: update copyright and license headers 1 year ago
ini_test.go all: update copyright and license headers 1 year ago
manager.go net/dns: retry forwarder requests over TCP 9 months ago
manager_darwin.go all: update copyright and license headers 1 year ago
manager_default.go all: update copyright and license headers 1 year ago
manager_freebsd.go all: update copyright and license headers 1 year ago
manager_linux.go net/dns: detect when libnss_resolve is used 12 months ago
manager_linux_test.go net/dns: detect when libnss_resolve is used 12 months ago
manager_openbsd.go all: update copyright and license headers 1 year ago
manager_tcp_test.go net/dns: retry forwarder requests over TCP 9 months ago
manager_test.go net/dns: retry forwarder requests over TCP 9 months ago
manager_windows.go net/dns: deal with Windows wsl.exe hangs 1 year ago
manager_windows_test.go various: add golangci-lint, fix issues (#7905) 1 year ago
nm.go net/{interfaces,netmon}: remove "interesting", EqualFiltered API 10 months ago
noop.go all: update copyright and license headers 1 year ago
nrpt_windows.go all: use set.Set consistently instead of map[T]struct{} 10 months ago
openresolv.go all: update copyright and license headers 1 year ago
osconfig.go wgengine/magicsock, controlclient, net/dns: reduce some logspam 9 months ago
osconfig_test.go all: update copyright and license headers 1 year ago
resolvconf-workaround.sh all: update copyright and license headers 1 year ago
resolvconf.go all: update copyright and license headers 1 year ago
resolvconfpath_default.go net/dns: overwrite /tmp/resolv.conf on gokrazy 11 months ago
resolvconfpath_gokrazy.go net/dns: overwrite /tmp/resolv.conf on gokrazy 11 months ago
resolvd.go all: update copyright and license headers 1 year ago
resolved.go net/dns: don't send on closed channel in resolvedManager 1 year ago
utf.go all: update copyright and license headers 1 year ago
utf_test.go all: update copyright and license headers 1 year ago
wsl_windows.go net/dns: deal with Windows wsl.exe hangs 1 year ago