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:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user