diff options
-rw-r--r-- | src/nm-connectivity.c | 16 | ||||
-rw-r--r-- | src/nm-connectivity.h | 4 | ||||
-rw-r--r-- | src/nm-manager.c | 11 |
3 files changed, 18 insertions, 13 deletions
diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c index a96f47abf8..804e3935fe 100644 --- a/src/nm-connectivity.c +++ b/src/nm-connectivity.c @@ -28,7 +28,6 @@ #include "nm-connectivity.h" #include "nm-logging.h" -#include "nm-config.h" G_DEFINE_TYPE (NMConnectivity, nm_connectivity, G_TYPE_OBJECT) @@ -342,17 +341,14 @@ nm_connectivity_check_finish (NMConnectivity *self, /**************************************************************************/ NMConnectivity * -nm_connectivity_new (void) +nm_connectivity_new (const char *uri, + guint interval, + const char *response) { - NMConfigData *config_data = nm_config_get_data (nm_config_get ()); - - /* NMConnectivity is (almost) independent from NMConfig and works - * fine without it. As convenience, the default constructor nm_connectivity_new() - * uses the parameters from NMConfig to create an instance. */ return g_object_new (NM_TYPE_CONNECTIVITY, - NM_CONNECTIVITY_URI, nm_config_data_get_connectivity_uri (config_data), - NM_CONNECTIVITY_INTERVAL, nm_config_data_get_connectivity_interval (config_data), - NM_CONNECTIVITY_RESPONSE, nm_config_data_get_connectivity_response (config_data), + NM_CONNECTIVITY_URI, uri, + NM_CONNECTIVITY_INTERVAL, interval, + NM_CONNECTIVITY_RESPONSE, response, NULL); } diff --git a/src/nm-connectivity.h b/src/nm-connectivity.h index a61af5c190..fc584d5fed 100644 --- a/src/nm-connectivity.h +++ b/src/nm-connectivity.h @@ -53,7 +53,9 @@ GType nm_connectivity_get_type (void); const char *nm_connectivity_state_to_string (NMConnectivityState state); -NMConnectivity *nm_connectivity_new (void); +NMConnectivity *nm_connectivity_new (const char *uri, + guint interval, + const char *response); void nm_connectivity_set_online (NMConnectivity *self, gboolean online); diff --git a/src/nm-manager.c b/src/nm-manager.c index 4ef0722644..e10c173543 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -4719,6 +4719,7 @@ nm_manager_new (NMSettings *settings, NMManagerPrivate *priv; DBusGConnection *bus; DBusConnection *dbus_connection; + NMConfigData *config_data; g_assert (settings); @@ -4750,7 +4751,10 @@ nm_manager_new (NMSettings *settings, g_signal_connect (priv->policy, "notify::" NM_POLICY_ACTIVATING_IP6_DEVICE, G_CALLBACK (policy_activating_device_changed), singleton); - priv->connectivity = nm_connectivity_new (); + config_data = nm_config_get_data (nm_config_get ()); + priv->connectivity = nm_connectivity_new (nm_config_data_get_connectivity_uri (config_data), + nm_config_data_get_connectivity_interval (config_data), + nm_config_data_get_connectivity_response (config_data)); g_signal_connect (priv->connectivity, "notify::" NM_CONNECTIVITY_STATE, G_CALLBACK (connectivity_changed), singleton); @@ -5071,7 +5075,10 @@ dispose (GObject *object) g_clear_object (&priv->primary_connection); g_clear_object (&priv->activating_connection); - g_clear_object (&priv->connectivity); + if (priv->connectivity) { + g_signal_handlers_disconnect_by_func (priv->connectivity, connectivity_changed, manager); + g_clear_object (&priv->connectivity); + } g_free (priv->hostname); |