summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2020-09-04 16:41:13 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2020-09-04 23:54:35 +0900
commitbf22f231cf1788fde3e554b061c081e15ffdaa05 (patch)
tree8bd7bd64c69627c8e7f69b37833a525ee2e9fa02 /src
parent1c17bcb3ad2b164917f3c0f72a3f067a81b72c13 (diff)
downloadsystemd-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.c4
-rw-r--r--src/resolve/resolved-dns-stub.c28
-rw-r--r--src/resolve/resolved-dns-stub.h4
-rw-r--r--src/resolve/resolved-manager.c1
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);