resolved: transaction - don't request PKTINFO for unicast DNS
This was only ever used by LLMNR, so don't request this for unicast DNS packets.
This commit is contained in:
@@ -654,7 +654,6 @@ static int on_dns_packet(sd_event_source *s, int fd, uint32_t revents, void *use
|
||||
}
|
||||
|
||||
int transaction_dns_fd(DnsTransaction *t) {
|
||||
const int one = 1;
|
||||
int r;
|
||||
|
||||
assert(t);
|
||||
@@ -668,21 +667,6 @@ int transaction_dns_fd(DnsTransaction *t) {
|
||||
if (t->dns_fd < 0)
|
||||
return -errno;
|
||||
|
||||
switch (t->scope->family) {
|
||||
case AF_INET:
|
||||
r = setsockopt(t->dns_fd, IPPROTO_IP, IP_PKTINFO, &one, sizeof(one));
|
||||
break;
|
||||
case AF_INET6:
|
||||
r = setsockopt(t->dns_fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &one, sizeof(one));
|
||||
break;
|
||||
default:
|
||||
return -EAFNOSUPPORT;
|
||||
}
|
||||
if (r < 0) {
|
||||
r = -errno;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = sd_event_add_io(t->scope->manager->event, &t->dns_event_source, t->dns_fd, EPOLLIN, on_dns_packet, t);
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
|
||||
@@ -912,10 +912,12 @@ int manager_recv(Manager *m, int fd, DnsProtocol protocol, DnsPacket **ret) {
|
||||
if (p->ifindex == LOOPBACK_IFINDEX)
|
||||
p->ifindex = 0;
|
||||
|
||||
/* If we don't know the interface index still, we look for the
|
||||
* first local interface with a matching address. Yuck! */
|
||||
if (p->ifindex <= 0)
|
||||
p->ifindex = manager_find_ifindex(m, p->family, &p->destination);
|
||||
if (protocol != DNS_PROTOCOL_DNS) {
|
||||
/* If we don't know the interface index still, we look for the
|
||||
* first local interface with a matching address. Yuck! */
|
||||
if (p->ifindex <= 0)
|
||||
p->ifindex = manager_find_ifindex(m, p->family, &p->destination);
|
||||
}
|
||||
|
||||
*ret = p;
|
||||
p = NULL;
|
||||
|
||||
Reference in New Issue
Block a user