resolve: introduce dns_stub_listener_extra_free() and set it as a key destructor

This commit is contained in:
Yu Watanabe
2020-09-04 23:54:35 +09:00
parent 1c17bcb3ad
commit bf22f231cf
4 changed files with 17 additions and 20 deletions
+2 -2
View 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();
+13 -15
View 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);
}
}
+2 -2
View 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);
-1
View 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);