summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2014-10-23 10:05:20 -0500
committerDan Williams <dcbw@redhat.com>2014-11-04 12:38:33 -0600
commit918495ffe804459a2f53f42d6f39362b2814de59 (patch)
tree53ef628e5abb0eb6903329fdcde388d22624c044
parentca0a4f4068e1d3bf9e99d00be273003db0862e6a (diff)
downloadNetworkManager-918495ffe804459a2f53f42d6f39362b2814de59.tar.gz
fixup! libnm: cancel NMRemoteSettings/NMManager property reload when NM quits
-rw-r--r--libnm-core/nm-core-internal.h6
-rw-r--r--libnm/nm-manager.c12
-rw-r--r--libnm/nm-remote-settings.c10
3 files changed, 13 insertions, 15 deletions
diff --git a/libnm-core/nm-core-internal.h b/libnm-core/nm-core-internal.h
index 48295f7821..fced4ffe3d 100644
--- a/libnm-core/nm-core-internal.h
+++ b/libnm-core/nm-core-internal.h
@@ -68,6 +68,12 @@
#include "nm-version.h"
#include "nm-vpn-dbus-interface.h"
+#define NM_UTILS_CLEAR_CANCELLABLE(c) \
+ if (c) { \
+ g_cancellable_cancel (c); \
+ g_clear_object (&c); \
+ }
+
const char *_nm_setting_ip4_config_get_address_label (NMSettingIP4Config *setting,
guint32 i);
gboolean _nm_setting_ip4_config_add_address_with_label (NMSettingIP4Config *setting,
diff --git a/libnm/nm-manager.c b/libnm/nm-manager.c
index afd84bbc67..d60845edc9 100644
--- a/libnm/nm-manager.c
+++ b/libnm/nm-manager.c
@@ -1216,10 +1216,6 @@ updated_properties (GObject *object, GAsyncResult *result, gpointer user_data)
_nm_object_queue_notify (NM_OBJECT (manager), NM_MANAGER_NM_RUNNING);
}
-#define CLEAR_CANCELLABLE(c) \
- if (c) g_cancellable_cancel (c); \
- g_clear_object (&c);
-
static void
nm_running_changed_cb (GObject *object,
GParamSpec *pspec,
@@ -1229,7 +1225,7 @@ nm_running_changed_cb (GObject *object,
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (manager);
if (!nm_manager_get_nm_running (manager)) {
- CLEAR_CANCELLABLE (priv->props_cancellable);
+ NM_UTILS_CLEAR_CANCELLABLE (priv->props_cancellable);
priv->state = NM_STATE_UNKNOWN;
priv->startup = FALSE;
@@ -1254,9 +1250,11 @@ nm_running_changed_cb (GObject *object,
_nm_object_cache_clear ();
} else {
_nm_object_suppress_property_updates (NM_OBJECT (manager), FALSE);
- CLEAR_CANCELLABLE (priv->props_cancellable);
+
+ NM_UTILS_CLEAR_CANCELLABLE (priv->props_cancellable);
priv->props_cancellable = g_cancellable_new ();
_nm_object_reload_properties_async (NM_OBJECT (manager), priv->props_cancellable, updated_properties, manager);
+
manager_recheck_permissions (priv->manager_proxy, manager);
}
}
@@ -1408,8 +1406,6 @@ dispose (GObject *object)
g_hash_table_destroy (priv->permissions);
priv->permissions = NULL;
- g_clear_object (&priv->props_cancellable);
-
G_OBJECT_CLASS (nm_manager_parent_class)->dispose (object);
}
diff --git a/libnm/nm-remote-settings.c b/libnm/nm-remote-settings.c
index 83446cd526..754fbe1303 100644
--- a/libnm/nm-remote-settings.c
+++ b/libnm/nm-remote-settings.c
@@ -611,10 +611,6 @@ updated_properties (GObject *object, GAsyncResult *result, gpointer user_data)
}
}
-#define CLEAR_CANCELLABLE(c) \
- if (c) g_cancellable_cancel (c); \
- g_clear_object (&c);
-
static void
nm_running_changed (GObject *object,
GParamSpec *pspec,
@@ -629,7 +625,7 @@ nm_running_changed (GObject *object,
GPtrArray *connections;
int i;
- CLEAR_CANCELLABLE (priv->props_cancellable);
+ NM_UTILS_CLEAR_CANCELLABLE (priv->props_cancellable);
/* Clear connections */
connections = priv->all_connections;
@@ -653,7 +649,8 @@ nm_running_changed (GObject *object,
_nm_object_suppress_property_updates (NM_OBJECT (self), TRUE);
} else {
_nm_object_suppress_property_updates (NM_OBJECT (self), FALSE);
- CLEAR_CANCELLABLE (priv->props_cancellable);
+
+ NM_UTILS_CLEAR_CANCELLABLE (priv->props_cancellable);
priv->props_cancellable = g_cancellable_new ();
_nm_object_reload_properties_async (NM_OBJECT (self), priv->props_cancellable, updated_properties, self);
}
@@ -741,7 +738,6 @@ dispose (GObject *object)
g_clear_pointer (&priv->visible_connections, g_ptr_array_unref);
g_clear_pointer (&priv->hostname, g_free);
- g_clear_object (&priv->props_cancellable);
G_OBJECT_CLASS (nm_remote_settings_parent_class)->dispose (object);
}