chiark / gitweb /
sd-network: remove redundant array size parameter from functions that return arrays
[elogind.git] / src / resolve / resolved-dns-scope.c
index 0a70cb1f0f6486ff9e79fcc91069d305b09cb0e0..1fa8401ed50f738388c4d9bc89fc2374a0135163 100644 (file)
@@ -102,8 +102,19 @@ int dns_scope_send(DnsScope *s, DnsPacket *p) {
                         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)
@@ -176,11 +187,14 @@ DnsScopeMatch dns_scope_test(DnsScope *s, const char *domain) {
         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;
-                else if (dns_name_endswith(domain, "local") ||
+                else if (dns_name_endswith(domain, "local") &&
                          !dns_name_single_label(domain))
                         return DNS_SCOPE_MAYBE;