summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nm-connectivity.c16
-rw-r--r--src/nm-connectivity.h4
-rw-r--r--src/nm-manager.c11
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);