chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
resolved: enforce limit on concurrent outstanding queries
[elogind.git]
/
src
/
resolve
/
resolved-dns-scope.c
diff --git
a/src/resolve/resolved-dns-scope.c
b/src/resolve/resolved-dns-scope.c
index 0a70cb1f0f6486ff9e79fcc91069d305b09cb0e0..1fa8401ed50f738388c4d9bc89fc2374a0135163 100644
(file)
--- a/
src/resolve/resolved-dns-scope.c
+++ b/
src/resolve/resolved-dns-scope.c
@@
-102,8
+102,19
@@
int dns_scope_send(DnsScope *s, DnsPacket *p) {
return -EMSGSIZE;
ifindex = s->link->ifindex;
return -EMSGSIZE;
ifindex = s->link->ifindex;
+ } else {
+ uint32_t mtu;
+
+ mtu = manager_find_mtu(s->manager);
+ if (mtu > 0) {
+ if (p->size > mtu)
+ return -EMSGSIZE;
+ }
}
}
+ if (p->size > DNS_PACKET_UNICAST_SIZE_MAX)
+ return -EMSGSIZE;
+
if (srv->family == AF_INET)
r = manager_dns_ipv4_send(s->manager, srv, ifindex, p);
else if (srv->family == AF_INET6)
if (srv->family == AF_INET)
r = manager_dns_ipv4_send(s->manager, srv, ifindex, p);
else if (srv->family == AF_INET6)
@@
-176,11
+187,14
@@
DnsScopeMatch dns_scope_test(DnsScope *s, const char *domain) {
if (dns_name_root(domain))
return DNS_SCOPE_NO;
if (dns_name_root(domain))
return DNS_SCOPE_NO;
+ if (is_localhost(domain))
+ return DNS_SCOPE_NO;
+
if (s->type == DNS_SCOPE_MDNS) {
if (dns_name_endswith(domain, "254.169.in-addr.arpa") ||
dns_name_endswith(domain, "0.8.e.f.ip6.arpa"))
return DNS_SCOPE_YES;
if (s->type == DNS_SCOPE_MDNS) {
if (dns_name_endswith(domain, "254.169.in-addr.arpa") ||
dns_name_endswith(domain, "0.8.e.f.ip6.arpa"))
return DNS_SCOPE_YES;
- else if (dns_name_endswith(domain, "local")
||
+ else if (dns_name_endswith(domain, "local")
&&
!dns_name_single_label(domain))
return DNS_SCOPE_MAYBE;
!dns_name_single_label(domain))
return DNS_SCOPE_MAYBE;