diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index 7d55142c41..047296cbf0 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -1427,7 +1427,6 @@ int manager_new(Manager **ret) { void manager_free(Manager *m) { AddressPool *pool; - Network *network; Link *link; if (!m) @@ -1435,10 +1434,6 @@ void manager_free(Manager *m) { free(m->state_file); - sd_netlink_unref(m->rtnl); - sd_netlink_unref(m->genl); - sd_resolve_unref(m->resolve); - while ((link = hashmap_first(m->dhcp6_prefixes))) manager_dhcp6_prefix_remove_all(m, link); hashmap_free(m->dhcp6_prefixes); @@ -1457,9 +1452,7 @@ void manager_free(Manager *m) { m->links = hashmap_free_with_destructor(m->links, link_unref); m->duids_requesting_uuid = set_free(m->duids_requesting_uuid); - while ((network = m->networks)) - network_unref(network); - hashmap_free(m->networks_by_name); + m->networks_by_name = hashmap_free_with_destructor(m->networks_by_name, network_unref); m->netdevs = hashmap_free_with_destructor(m->netdevs, netdev_unref); @@ -1472,6 +1465,10 @@ void manager_free(Manager *m) { m->rules_foreign = set_free_with_destructor(m->rules_foreign, routing_policy_rule_free); set_free_with_destructor(m->rules_saved, routing_policy_rule_free); + sd_netlink_unref(m->rtnl); + sd_netlink_unref(m->genl); + sd_resolve_unref(m->resolve); + sd_event_unref(m->event); sd_device_monitor_unref(m->device_monitor);