resolve: introduce dns_stub_listener_extra_free() and set it as a key destructor
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user