From: Yu Watanabe Date: Fri, 4 Sep 2020 07:41:13 +0000 (+0900) Subject: resolve: introduce dns_stub_listener_extra_free() and set it as a key destructor X-Git-Tag: v247-rc1~292^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bf22f231cf1788fde3e554b061c081e15ffdaa05;p=thirdparty%2Fsystemd.git resolve: introduce dns_stub_listener_extra_free() and set it as a key destructor --- diff --git a/src/resolve/resolved-conf.c b/src/resolve/resolved-conf.c index 57154f86332..639fd34178e 100644 --- a/src/resolve/resolved-conf.c +++ b/src/resolve/resolved-conf.c @@ -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(); diff --git a/src/resolve/resolved-dns-stub.c b/src/resolve/resolved-dns-stub.c index a8011d16f30..74e4f261c32 100644 --- a/src/resolve/resolved-dns-stub.c +++ b/src/resolve/resolved-dns-stub.c @@ -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); - } -} diff --git a/src/resolve/resolved-dns-stub.h b/src/resolve/resolved-dns-stub.h index e589df38319..96d65af1523 100644 --- a/src/resolve/resolved-dns-stub.h +++ b/src/resolve/resolved-dns-stub.h @@ -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); diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c index ea26fb0795f..50d8b01d9aa 100644 --- a/src/resolve/resolved-manager.c +++ b/src/resolve/resolved-manager.c @@ -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);