chiark / gitweb /
Let config_parse open file where applicable
[elogind.git] / src / resolve / resolved-manager.c
index dc6deeb7e54ee704499366bc650abb869f08d841..ab504d0a758f73033255b106a22f4dbb4103a54c 100644 (file)
@@ -373,19 +373,12 @@ int config_parse_dnsv(
 }
 
 int manager_parse_config_file(Manager *m) {
-        int r;
-
         assert(m);
 
-        r = config_parse(NULL,
-                         "/etc/systemd/resolved.conf", NULL,
-                         "Resolve\0",
-                         config_item_perf_lookup, (void*) resolved_gperf_lookup,
-                         false, false, m);
-        if (r < 0)
-                log_warning("Failed to parse configuration file: %s", strerror(-r));
-
-        return 0;
+        return config_parse(NULL, "/etc/systemd/resolved.conf", NULL,
+                            "Resolve\0",
+                            config_item_perf_lookup, resolved_gperf_lookup,
+                            false, false, true, m);
 }
 
 int manager_new(Manager **ret) {
@@ -578,7 +571,7 @@ int manager_dns_ipv4_recv(Manager *m, DnsPacket **ret) {
 
         l = recvmsg(fd, &mh, 0);
         if (l < 0) {
-                if (errno == EAGAIN)
+                if (errno == EAGAIN || errno == EINTR)
                         return 0;
 
                 return -errno;
@@ -627,7 +620,7 @@ int manager_dns_ipv6_recv(Manager *m, DnsPacket **ret) {
 
         l = recvmsg(fd, &mh, 0);
         if (l < 0) {
-                if (errno == EAGAIN)
+                if (errno == EAGAIN || errno == EINTR)
                         return 0;
 
                 return -errno;
@@ -654,11 +647,12 @@ static int on_dns_ipv4_packet(sd_event_source *s, int fd, uint32_t revents, void
         if (r <= 0)
                 return r;
 
-        t = hashmap_get(m->dns_query_transactions, UINT_TO_PTR(DNS_PACKET_HEADER(p)->id));
+        t = hashmap_get(m->dns_query_transactions, UINT_TO_PTR(DNS_PACKET_ID(p)));
         if (!t)
                 return 0;
 
-        return dns_query_transaction_reply(t, p);
+        dns_query_transaction_reply(t, p);
+        return 0;
 }
 
 static int on_dns_ipv6_packet(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
@@ -671,11 +665,12 @@ static int on_dns_ipv6_packet(sd_event_source *s, int fd, uint32_t revents, void
         if (r <= 0)
                 return r;
 
-        t = hashmap_get(m->dns_query_transactions, UINT_TO_PTR(DNS_PACKET_HEADER(p)->id));
+        t = hashmap_get(m->dns_query_transactions, UINT_TO_PTR(DNS_PACKET_ID(p)));
         if (!t)
                 return 0;
 
-        return dns_query_transaction_reply(t, p);
+        dns_query_transaction_reply(t, p);
+        return 0;
 }
 
 int manager_dns_ipv4_fd(Manager *m) {