]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: choose correct file descriptor for proxy stub replies 23582/head
authorBenjamin Franzke <benjaminfranzke@googlemail.com>
Wed, 1 Jun 2022 12:40:51 +0000 (14:40 +0200)
committerBenjamin Franzke <benjaminfranzke@googlemail.com>
Wed, 1 Jun 2022 13:08:33 +0000 (15:08 +0200)
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.

src/resolve/resolved-dns-stub.c

index 89d1f1cdfc214fc3b2e5d55d82af3b379ca860e7..fdd589fa92c0789c069ffb58a99587c9cfcc998b 100644 (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;