From 62dd70e1d1e0f3019bcca55b7a3e04fdb9597bc9 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 2 Jul 2014 15:19:58 +0200 Subject: [PATCH] core: use singleton nm_firewall_manager_get() throughout without taking additional ref No need to keep references of the singleton and take an additional ref when accessing nm_firewall_manager_get(). Especially, since the firewall manager instance was nowhere passed in from externally, it doesn't even sense for some vague testing purporse. Not to mention, that there are no tests that actually inject a firewall manager stub. Signed-off-by: Thomas Haller --- src/devices/nm-device.c | 31 +++++++++------------- src/firewall-manager/nm-firewall-manager.c | 7 +++-- src/nm-policy.c | 19 +++++-------- 3 files changed, 22 insertions(+), 35 deletions(-) diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 0fc5e26c61..97546a2b34 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -251,8 +251,7 @@ typedef struct { NMDnsMasqManager *dnsmasq_manager; gulong dnsmasq_state_id; - /* Firewall Manager */ - NMFirewallManager *fw_manager; + /* Firewall */ DBusGProxyCall *fw_call; /* avahi-autoipd stuff */ @@ -4142,7 +4141,7 @@ nm_device_activate_schedule_stage3_ip_config_start (NMDevice *self) zone = nm_setting_connection_get_zone (s_con); nm_log_dbg (LOGD_DEVICE, "Activation (%s) setting firewall zone '%s'", nm_device_get_iface (self), zone ? zone : "default"); - priv->fw_call = nm_firewall_manager_add_or_change_zone (priv->fw_manager, + priv->fw_call = nm_firewall_manager_add_or_change_zone (nm_firewall_manager_get (), nm_device_get_ip_iface (self), zone, FALSE, @@ -6425,23 +6424,21 @@ nm_device_has_pending_action (NMDevice *device) static void _cleanup_generic_pre (NMDevice *self, gboolean deconfigure) { + NMConnection *connection; NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self); /* Clean up when device was deactivated during call to firewall */ - if (priv->fw_manager) { - NMConnection *connection; - if (priv->fw_call) { - nm_firewall_manager_cancel_call (priv->fw_manager, priv->fw_call); - priv->fw_call = NULL; - } + if (priv->fw_call) { + nm_firewall_manager_cancel_call (nm_firewall_manager_get (), priv->fw_call); + priv->fw_call = NULL; + } - connection = nm_device_get_connection (self); - if (deconfigure && connection) { - nm_firewall_manager_remove_from_zone (priv->fw_manager, - nm_device_get_ip_iface (self), - NULL); - } + connection = nm_device_get_connection (self); + if (deconfigure && connection) { + nm_firewall_manager_remove_from_zone (nm_firewall_manager_get (), + nm_device_get_ip_iface (self), + NULL); } ip_check_gw_ping_cleanup (self); @@ -7234,8 +7231,6 @@ constructor (GType type, if (NM_DEVICE_GET_CLASS (dev)->get_generic_capabilities) priv->capabilities |= NM_DEVICE_GET_CLASS (dev)->get_generic_capabilities (dev); - priv->fw_manager = nm_firewall_manager_get (); - device_get_driver_info (priv->iface, &priv->driver_version, &priv->firmware_version); /* Watch for external IP config changes */ @@ -7356,8 +7351,6 @@ dispose (GObject *object) g_signal_handlers_disconnect_by_func (platform, G_CALLBACK (device_ip_changed), self); g_signal_handlers_disconnect_by_func (platform, G_CALLBACK (link_changed_cb), self); - g_clear_object (&priv->fw_manager); - G_OBJECT_CLASS (nm_device_parent_class)->dispose (object); } diff --git a/src/firewall-manager/nm-firewall-manager.c b/src/firewall-manager/nm-firewall-manager.c index d8a52c12a8..d3e3777d44 100644 --- a/src/firewall-manager/nm-firewall-manager.c +++ b/src/firewall-manager/nm-firewall-manager.c @@ -263,12 +263,11 @@ nm_firewall_manager_get (void) { static NMFirewallManager *singleton = NULL; - if (!singleton) + if (G_UNLIKELY (!singleton)) { singleton = NM_FIREWALL_MANAGER (g_object_new (NM_TYPE_FIREWALL_MANAGER, NULL)); - else - g_object_ref (singleton); + g_assert (singleton); + } - g_assert (singleton); return singleton; } diff --git a/src/nm-policy.c b/src/nm-policy.c index 63202ee738..18a0184504 100644 --- a/src/nm-policy.c +++ b/src/nm-policy.c @@ -54,7 +54,6 @@ typedef struct { GSList *pending_secondaries; - NMFirewallManager *fw_manager; gulong fw_started_id; NMSettings *settings; @@ -1883,7 +1882,7 @@ firewall_update_zone (NMPolicy *policy, NMConnection *connection) if ( (nm_device_get_connection (dev) == connection) && (nm_device_get_state (dev) == NM_DEVICE_STATE_ACTIVATED)) { - nm_firewall_manager_add_or_change_zone (priv->fw_manager, + nm_firewall_manager_add_or_change_zone (nm_firewall_manager_get (), nm_device_get_ip_iface (dev), nm_setting_connection_get_zone (s_con), FALSE, /* change zone */ @@ -1913,7 +1912,7 @@ firewall_started (NMFirewallManager *manager, s_con = nm_connection_get_setting_connection (connection); if (nm_device_get_state (dev) == NM_DEVICE_STATE_ACTIVATED) { - nm_firewall_manager_add_or_change_zone (priv->fw_manager, + nm_firewall_manager_add_or_change_zone (nm_firewall_manager_get (), nm_device_get_ip_iface (dev), nm_setting_connection_get_zone (s_con), FALSE, /* still change zone */ @@ -2069,7 +2068,6 @@ nm_policy_new (NMManager *manager, NMSettings *settings) NMPolicy *policy; NMPolicyPrivate *priv; static gboolean initialized = FALSE; - gulong id; char hostname[HOST_NAME_MAX + 2]; g_return_val_if_fail (NM_IS_MANAGER (manager), NULL); @@ -2092,10 +2090,8 @@ nm_policy_new (NMManager *manager, NMSettings *settings) priv->orig_hostname = g_strdup (hostname); } - priv->fw_manager = nm_firewall_manager_get(); - id = g_signal_connect (priv->fw_manager, "started", - G_CALLBACK (firewall_started), policy); - priv->fw_started_id = id; + priv->fw_started_id = g_signal_connect (nm_firewall_manager_get (), "started", + G_CALLBACK (firewall_started), policy); priv->dns_manager = nm_dns_manager_get (); nm_dns_manager_set_initial_hostname (priv->dns_manager, priv->orig_hostname); @@ -2201,10 +2197,9 @@ dispose (GObject *object) g_slist_free_full (priv->pending_secondaries, (GDestroyNotify) pending_secondary_data_free); priv->pending_secondaries = NULL; - if (priv->fw_manager) { - g_signal_handler_disconnect (priv->fw_manager, priv->fw_started_id); - g_object_unref (priv->fw_manager); - priv->fw_manager = NULL; + if (priv->fw_started_id) { + g_signal_handler_disconnect (nm_firewall_manager_get (), priv->fw_started_id); + priv->fw_started_id = 0; } if (priv->dns_manager) {