]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolve: introduce dns_stub_listener_extra_free() and set it as a key destructor
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 4 Sep 2020 07:41:13 +0000 (16:41 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 4 Sep 2020 14:54:35 +0000 (23:54 +0900)
src/resolve/resolved-conf.c
src/resolve/resolved-dns-stub.c
src/resolve/resolved-dns-stub.h
src/resolve/resolved-manager.c

index 57154f8633213e386f661f9ec41cf4f416dd4a96..639fd34178ec25dec4f521858b78ae25b8565c61 100644 (file)
@@ -64,7 +64,7 @@ DEFINE_PRIVATE_HASH_OPS_WITH_KEY_DESTRUCTOR(
                 DNSStubListenerExtra,
                 dns_stub_listener_extra_hash_func,
                 dns_stub_listener_extra_compare_func,
-                free);
+                dns_stub_listener_extra_free);
 
 static int manager_add_dns_server_by_string(Manager *m, DnsServerType type, const char *word) {
         _cleanup_free_ char *server_name = NULL;
@@ -451,7 +451,7 @@ int config_parse_dns_stub_listener_extra(
                 return 0;
         }
 
-        r = dns_stub_extra_new(&stub);
+        r = dns_stub_listener_extra_new(&stub);
         if (r < 0)
                 return log_oom();
 
index a8011d16f30a02c8ae0775fcd807fb4567ffebc4..74e4f261c3292bd51352335246a04a30b0232769 100644 (file)
@@ -17,7 +17,7 @@
 static int manager_dns_stub_udp_fd(Manager *m);
 static int manager_dns_stub_tcp_fd(Manager *m);
 
-int dns_stub_extra_new(DNSStubListenerExtra **ret) {
+int dns_stub_listener_extra_new(DNSStubListenerExtra **ret) {
         DNSStubListenerExtra *l;
 
         l = new(DNSStubListenerExtra, 1);
@@ -34,6 +34,18 @@ int dns_stub_extra_new(DNSStubListenerExtra **ret) {
         return 0;
 }
 
+DNSStubListenerExtra *dns_stub_listener_extra_free(DNSStubListenerExtra *p) {
+        if (!p)
+                return NULL;
+
+        p->udp_event_source = sd_event_source_unref(p->udp_event_source);
+        p->tcp_event_source = sd_event_source_unref(p->tcp_event_source);
+        p->udp_fd = safe_close(p->udp_fd);
+        p->tcp_fd = safe_close(p->tcp_fd);
+
+        return mfree(p);
+}
+
 static int dns_stub_make_reply_packet(
                 DnsPacket **p,
                 size_t max_size,
@@ -767,17 +779,3 @@ void manager_dns_stub_stop(Manager *m) {
         m->dns_stub_udp_fd = safe_close(m->dns_stub_udp_fd);
         m->dns_stub_tcp_fd = safe_close(m->dns_stub_tcp_fd);
 }
-
-void manager_dns_stub_stop_extra(Manager *m) {
-        DNSStubListenerExtra *l;
-        Iterator i;
-
-        assert(m);
-
-        ORDERED_SET_FOREACH(l, m->dns_extra_stub_listeners, i) {
-                l->udp_event_source = sd_event_source_unref(l->udp_event_source);
-                l->tcp_event_source = sd_event_source_unref(l->tcp_event_source);
-                l->udp_fd = safe_close(l->udp_fd);
-                l->tcp_fd = safe_close(l->tcp_fd);
-        }
-}
index e589df383198376fac46436c6cef4de94e4bac27..96d65af1523e97deac9e8cb0bea29b8aa8f75d17 100644 (file)
@@ -3,8 +3,8 @@
 
 #include "resolved-manager.h"
 
-int dns_stub_extra_new(DNSStubListenerExtra **ret);
+int dns_stub_listener_extra_new(DNSStubListenerExtra **ret);
+DNSStubListenerExtra *dns_stub_listener_extra_free(DNSStubListenerExtra *p);
 
 void manager_dns_stub_stop(Manager *m);
-void manager_dns_stub_stop_extra(Manager *m);
 int manager_dns_stub_start(Manager *m);
index ea26fb0795fe96464e095b722855e621bcd4267b..50d8b01d9aaf581859804df2234c1656c2b26a87 100644 (file)
@@ -713,7 +713,6 @@ Manager *manager_free(Manager *m) {
         manager_dns_stub_stop(m);
         manager_varlink_done(m);
 
-        manager_dns_stub_stop_extra(m);
         ordered_set_free(m->dns_extra_stub_listeners);
 
         bus_verify_polkit_async_registry_free(m->polkit_registry);