resolved: choose correct file descriptor for proxy stub replies

find_socket_fd() does not expect the sender address, but the
listen-address. This is in fact the destination of the DNS packet.
Matching via sender address caused a fallback to the default stub
listener in manager_dns_stub_fd() as the sender address can never
match the proxy stub listen address.

Note that manager_dns_stub_fd() is only used for the default
listener stub and the proxy stub, that means *extra* listeners
stubs (DNSStubListenerExtra=…) have not been affected as
`struct DnsStubListenerExtra` provides a direct link to the event
source.

By using the correct fd we ensure the correct socket options
(like TTL) are used and prevent issues like #23495 in case ifindex
could not be determined.
This commit is contained in:
Benjamin Franzke
2022-06-01 15:08:33 +02:00
parent dfa14e2859
commit de777ffae8
+1 -1
View File
@@ -530,7 +530,7 @@ static int dns_stub_send(
else {
int fd, ifindex;
fd = find_socket_fd(m, l, p->family, &p->sender, SOCK_DGRAM);
fd = find_socket_fd(m, l, p->family, &p->destination, SOCK_DGRAM);
if (fd < 0)
return fd;