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/resolver
Nick Hill c2144c44a3 net/dns/resolver: update (*forwarder).forwardWithDestChan to always return an error unless it sends a response to responseChan
We currently have two executions paths where (*forwarder).forwardWithDestChan
returns nil, rather than an error, without sending a DNS response to responseChan.

These paths are accompanied by a comment that reads:
// Returning an error will cause an internal retry, there is
// nothing we can do if parsing failed. Just drop the packet.
But it is not (or no longer longer) accurate: returning an error from forwardWithDestChan
does not currently cause a retry.

Moreover, although these paths are currently unreachable due to implementation details,
if (*forwarder).forwardWithDestChan were to return nil without sending a response to
responseChan, it would cause a deadlock at one call site and a panic at another.

Therefore, we update (*forwarder).forwardWithDestChan to return errors in those two paths
and remove comments that were no longer accurate and misleading.

Updates #cleanup
Updates #13571

Signed-off-by: Nick Hill <mykola.khyl@gmail.com>
1 month ago
..
debug.go all: use Go 1.22 range-over-int 7 months ago
doh_test.go net/dns/resolver: remove maxDoHInFlight 2 years ago
forwarder.go net/dns/resolver: update (*forwarder).forwardWithDestChan to always return an error unless it sends a response to responseChan 1 month ago
forwarder_test.go net/dns/resolver: update (*forwarder).forwardWithDestChan to always return an error unless it sends a response to responseChan 1 month ago
macios_ext.go all: avoid repeated default interface lookups 2 years ago
tsdns.go net/dns/resolver: forward SERVFAIL responses over PeerDNS 1 month ago
tsdns_server_test.go all: update copyright and license headers 2 years ago
tsdns_test.go net/dns/resolver: update (*forwarder).forwardWithDestChan to always return an error unless it sends a response to responseChan 1 month ago