diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2020-09-04 16:41:13 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2020-09-04 23:54:35 +0900 |
commit | bf22f231cf1788fde3e554b061c081e15ffdaa05 (patch) | |
tree | 8bd7bd64c69627c8e7f69b37833a525ee2e9fa02 /src | |
parent | 1c17bcb3ad2b164917f3c0f72a3f067a81b72c13 (diff) | |
download | systemd-bf22f231cf1788fde3e554b061c081e15ffdaa05.tar.gz |
resolve: introduce dns_stub_listener_extra_free() and set it as a key destructor
Diffstat (limited to 'src')
-rw-r--r-- | src/resolve/resolved-conf.c | 4 | ||||
-rw-r--r-- | src/resolve/resolved-dns-stub.c | 28 | ||||
-rw-r--r-- | src/resolve/resolved-dns-stub.h | 4 | ||||
-rw-r--r-- | src/resolve/resolved-manager.c | 1 |
4 files changed, 17 insertions, 20 deletions
diff --git a/src/resolve/resolved-conf.c b/src/resolve/resolved-conf.c index 57154f8633..639fd34178 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 a8011d16f3..74e4f261c3 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 e589df3831..96d65af152 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 ea26fb0795..50d8b01d9a 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); |