about summary refs log tree commit diff
path: root/debian
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2013-01-06 10:12:56 +0100
committerMichael Biebl <biebl@debian.org>2013-01-06 10:12:56 +0100
commit81c0531f1172cc3f5567b7a898382ba241e43704 (patch)
tree3ef8a4792bd01d1145cc1517af66da30069ffbc6 /debian
parent1fe107fc1936f19cc682708fa4c1c83ee6333dfe (diff)
Merge changes from unstable branch.
Drop patches for libnm-glib, merged upstream.
Diffstat (limited to 'debian')
-rw-r--r--debian/changelog7
-rw-r--r--debian/patches/18-libnm-glib-NULL-out-priv-fields-on-dispose.patch670
-rw-r--r--debian/patches/19-libnm-glib-discard-devices-and-active-connections-on-stop.patch112
-rw-r--r--debian/patches/20-libnm-glib-clear-object-cache-on-stop.patch72
-rw-r--r--debian/patches/series3
5 files changed, 7 insertions, 857 deletions
diff --git a/debian/changelog b/debian/changelog
index 15698c52..35486919 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+network-manager (0.9.6.4-2) UNRELEASED; urgency=low
+
+  * Merge changes from unstable branch.
+  * Drop patches for libnm-glib, merged upstream.
+
+ -- Michael Biebl <biebl@debian.org>  Sun, 06 Jan 2013 10:11:57 +0100
+
 network-manager (0.9.6.4-1) experimental; urgency=low
 
   * New upstream release.
diff --git a/debian/patches/18-libnm-glib-NULL-out-priv-fields-on-dispose.patch b/debian/patches/18-libnm-glib-NULL-out-priv-fields-on-dispose.patch
deleted file mode 100644
index 74a86a4e..00000000
--- a/debian/patches/18-libnm-glib-NULL-out-priv-fields-on-dispose.patch
+++ /dev/null
@@ -1,670 +0,0 @@
-From be18dd06cd138be232ff68ec7af19cfcf2f969ed Mon Sep 17 00:00:00 2001
-From: Dan Winship <danw@gnome.org>
-Date: Mon, 23 Apr 2012 15:02:48 +0000
-Subject: libnm-glib: NULL out priv fields on dispose()
-
-In some situations, objects might get used after being disposed, so
-clear out their various priv fields so we don't try to access unreffed
-objects, freed strings, etc.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=674473
----
-Index: network-manager/include/nm-glib-compat.h
-===================================================================
---- network-manager.orig/include/nm-glib-compat.h	2012-10-30 21:02:36.779282426 +0100
-+++ network-manager/include/nm-glib-compat.h	2012-12-21 01:13:58.030742565 +0100
-@@ -42,6 +42,16 @@
- 		g_simple_async_result_set_from_error (result, __error); \
- 		g_error_free (__error); \
- 	} G_STMT_END
-+
-+#define g_clear_object(object_ptr) \
-+	G_STMT_START { \
-+		GObject **__obj_p = object_ptr; \
-+		if (*__obj_p) { \
-+			g_object_unref (*__obj_p); \
-+			*__obj_p = NULL; \
-+		} \
-+	} G_STMT_END
-+
- #endif
- 
- #endif  /* NM_GLIB_COMPAT_H */
-Index: network-manager/libnm-glib/nm-access-point.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-access-point.c	2012-10-30 21:02:36.783282401 +0100
-+++ network-manager/libnm-glib/nm-access-point.c	2012-12-21 01:13:58.030742565 +0100
-@@ -41,7 +41,6 @@
- #define NM_ACCESS_POINT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_ACCESS_POINT, NMAccessPointPrivate))
- 
- typedef struct {
--	gboolean disposed;
- 	DBusGProxy *proxy;
- 
- 	NM80211ApFlags flags;
-@@ -431,14 +430,7 @@
- {
- 	NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (object);
- 
--	if (priv->disposed) {
--		G_OBJECT_CLASS (nm_access_point_parent_class)->dispose (object);
--		return;
--	}
--
--	priv->disposed = TRUE;
--
--	g_object_unref (priv->proxy);
-+	g_clear_object (&priv->proxy);
- 
- 	G_OBJECT_CLASS (nm_access_point_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-active-connection.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-active-connection.c	2012-10-30 21:02:36.783282401 +0100
-+++ network-manager/libnm-glib/nm-active-connection.c	2012-12-21 01:13:58.034742595 +0100
-@@ -49,7 +49,6 @@
- #define NM_ACTIVE_CONNECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_ACTIVE_CONNECTION, NMActiveConnectionPrivate))
- 
- typedef struct {
--	gboolean disposed;
- 	DBusGProxy *proxy;
- 
- 	char *connection;
-@@ -357,18 +356,13 @@
- {
- 	NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (object);
- 
--	if (priv->disposed) {
--		G_OBJECT_CLASS (nm_active_connection_parent_class)->dispose (object);
--		return;
--	}
--
--	priv->disposed = TRUE;
--
- 	if (priv->devices) {
- 		g_ptr_array_foreach (priv->devices, (GFunc) g_object_unref, NULL);
- 		g_ptr_array_free (priv->devices, TRUE);
-+		priv->devices = NULL;
- 	}
--	g_object_unref (priv->proxy);
-+
-+	g_clear_object (&priv->proxy);
- 
- 	G_OBJECT_CLASS (nm_active_connection_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-client.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-client.c	2012-10-30 21:02:36.783282401 +0100
-+++ network-manager/libnm-glib/nm-client.c	2012-12-21 01:13:58.034742595 +0100
-@@ -53,8 +53,6 @@
- #define NM_CLIENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_CLIENT, NMClientPrivate))
- 
- typedef struct {
--	gboolean disposed;
--
- 	DBusGProxy *client_proxy;
- 	DBusGProxy *bus_proxy;
- 	gboolean manager_running;
-@@ -1419,24 +1417,23 @@
- {
- 	NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (object);
- 
--	if (priv->disposed) {
--		G_OBJECT_CLASS (nm_client_parent_class)->dispose (object);
--		return;
--	}
--
--	if (priv->perm_call)
-+	if (priv->perm_call) {
- 		dbus_g_proxy_cancel_call (priv->client_proxy, priv->perm_call);
-+		priv->perm_call = NULL;
-+	}
- 
--	g_object_unref (priv->client_proxy);
--	g_object_unref (priv->bus_proxy);
-+	g_clear_object (&priv->client_proxy);
-+	g_clear_object (&priv->bus_proxy);
- 
- 	free_object_array (&priv->devices);
- 	dispose_and_free_object_array (&priv->active_connections);
- 
- 	g_slist_foreach (priv->pending_activations, (GFunc) activate_info_free, NULL);
- 	g_slist_free (priv->pending_activations);
-+	priv->pending_activations = NULL;
- 
- 	g_hash_table_destroy (priv->permissions);
-+	priv->permissions = NULL;
- 
- 	G_OBJECT_CLASS (nm_client_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-device-bond.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-device-bond.c	2012-10-30 21:02:36.783282401 +0100
-+++ network-manager/libnm-glib/nm-device-bond.c	2012-12-21 01:13:58.034742595 +0100
-@@ -215,10 +215,7 @@
- {
- 	NMDeviceBondPrivate *priv = NM_DEVICE_BOND_GET_PRIVATE (object);
- 
--	if (priv->proxy) {
--		g_object_unref (priv->proxy);
--		priv->proxy = NULL;
--	}
-+	g_clear_object (&priv->proxy);
- 
- 	G_OBJECT_CLASS (nm_device_bond_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-device-bt.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-device-bt.c	2012-10-30 21:02:36.783282401 +0100
-+++ network-manager/libnm-glib/nm-device-bt.c	2012-12-21 01:13:58.034742595 +0100
-@@ -42,8 +42,6 @@
- 	char *hw_address;
- 	char *name;
- 	guint32 bt_capabilities;
--
--	gboolean disposed;
- } NMDeviceBtPrivate;
- 
- enum {
-@@ -273,13 +271,7 @@
- {
- 	NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (object);
- 
--	if (priv->disposed) {
--		G_OBJECT_CLASS (nm_device_bt_parent_class)->dispose (object);
--		return;
--	}
--	priv->disposed = TRUE;
--
--	g_object_unref (priv->proxy);
-+	g_clear_object (&priv->proxy);
- 
- 	G_OBJECT_CLASS (nm_device_bt_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-device-ethernet.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-device-ethernet.c	2012-10-30 21:02:36.783282401 +0100
-+++ network-manager/libnm-glib/nm-device-ethernet.c	2012-12-21 01:13:58.034742595 +0100
-@@ -44,8 +44,6 @@
- 	char *perm_hw_address;
- 	guint32 speed;
- 	gboolean carrier;
--
--	gboolean disposed;
- } NMDeviceEthernetPrivate;
- 
- enum {
-@@ -280,14 +278,7 @@
- {
- 	NMDeviceEthernetPrivate *priv = NM_DEVICE_ETHERNET_GET_PRIVATE (object);
- 
--	if (priv->disposed) {
--		G_OBJECT_CLASS (nm_device_ethernet_parent_class)->dispose (object);
--		return;
--	}
--
--	priv->disposed = TRUE;
--
--	g_object_unref (priv->proxy);
-+	g_clear_object (&priv->proxy);
- 
- 	G_OBJECT_CLASS (nm_device_ethernet_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-device-infiniband.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-device-infiniband.c	2012-10-30 21:02:36.783282401 +0100
-+++ network-manager/libnm-glib/nm-device-infiniband.c	2012-12-21 01:13:58.034742595 +0100
-@@ -224,10 +224,7 @@
- {
- 	NMDeviceInfinibandPrivate *priv = NM_DEVICE_INFINIBAND_GET_PRIVATE (object);
- 
--	if (priv->proxy) {
--		g_object_unref (priv->proxy);
--		priv->proxy = NULL;
--	}
-+	g_clear_object (&priv->proxy);
- 
- 	G_OBJECT_CLASS (nm_device_infiniband_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-device-modem.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-device-modem.c	2012-10-30 21:02:36.783282401 +0100
-+++ network-manager/libnm-glib/nm-device-modem.c	2012-12-21 01:13:58.034742595 +0100
-@@ -44,8 +44,6 @@
- 
- 	NMDeviceModemCapabilities caps;
- 	NMDeviceModemCapabilities current_caps;
--
--	gboolean disposed;
- } NMDeviceModemPrivate;
- 
- enum {
-@@ -223,14 +221,7 @@
- {
- 	NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (object);
- 
--	if (priv->disposed) {
--		G_OBJECT_CLASS (nm_device_modem_parent_class)->dispose (object);
--		return;
--	}
--
--	priv->disposed = TRUE;
--
--	g_object_unref (priv->proxy);
-+	g_clear_object (&priv->proxy);
- 
- 	G_OBJECT_CLASS (nm_device_modem_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-device-olpc-mesh.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-device-olpc-mesh.c	2012-10-30 21:02:36.783282401 +0100
-+++ network-manager/libnm-glib/nm-device-olpc-mesh.c	2012-12-21 01:13:58.034742595 +0100
-@@ -227,14 +227,8 @@
- {
- 	NMDeviceOlpcMeshPrivate *priv = NM_DEVICE_OLPC_MESH_GET_PRIVATE (object);
- 
--	if (priv->companion) {
--		g_object_unref (priv->companion);
--		priv->companion = NULL;
--	}
--	if (priv->proxy) {
--		g_object_unref (priv->proxy);
--		priv->proxy = NULL;
--	}
-+	g_clear_object (&priv->companion);
-+	g_clear_object (&priv->proxy);
- 
- 	G_OBJECT_CLASS (nm_device_olpc_mesh_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-device-vlan.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-device-vlan.c	2012-10-30 21:02:36.787282377 +0100
-+++ network-manager/libnm-glib/nm-device-vlan.c	2012-12-21 01:13:58.034742595 +0100
-@@ -238,10 +238,7 @@
- {
- 	NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE (object);
- 
--	if (priv->proxy) {
--		g_object_unref (priv->proxy);
--		priv->proxy = NULL;
--	}
-+	g_clear_object (&priv->proxy);
- 
- 	G_OBJECT_CLASS (nm_device_vlan_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-device-wifi.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-device-wifi.c	2012-10-30 21:02:36.787282377 +0100
-+++ network-manager/libnm-glib/nm-device-wifi.c	2012-12-21 01:13:58.034742595 +0100
-@@ -43,7 +43,6 @@
- void _nm_device_wifi_set_wireless_enabled (NMDeviceWifi *device, gboolean enabled);
- 
- typedef struct {
--	gboolean disposed;
- 	DBusGProxy *proxy;
- 
- 	char *hw_address;
-@@ -606,15 +605,8 @@
- {
- 	NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (object);
- 
--	if (priv->disposed) {
--		G_OBJECT_CLASS (nm_device_wifi_parent_class)->dispose (object);
--		return;
--	}
--
--	priv->disposed = TRUE;
--
- 	clean_up_aps (NM_DEVICE_WIFI (object), FALSE);
--	g_object_unref (priv->proxy);
-+	g_clear_object (&priv->proxy);
- 
- 	G_OBJECT_CLASS (nm_device_wifi_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-device-wimax.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-device-wimax.c	2012-10-30 21:02:36.787282377 +0100
-+++ network-manager/libnm-glib/nm-device-wimax.c	2012-12-21 01:13:58.034742595 +0100
-@@ -42,7 +42,6 @@
- void _nm_device_wimax_set_wireless_enabled (NMDeviceWimax *wimax, gboolean enabled);
- 
- typedef struct {
--	gboolean disposed;
- 	DBusGProxy *proxy;
- 
- 	char *hw_address;
-@@ -591,18 +590,18 @@
- {
- 	NMDeviceWimaxPrivate *priv = NM_DEVICE_WIMAX_GET_PRIVATE (object);
- 
--	if (priv->disposed) {
--		G_OBJECT_CLASS (nm_device_wimax_parent_class)->dispose (object);
--		return;
-+	if (priv->hw_address) {
-+		g_free (priv->hw_address);
-+		priv->hw_address = NULL;
- 	}
- 
--	priv->disposed = TRUE;
--
--	g_free (priv->hw_address);
--	g_free (priv->bsid);
-+	if (priv->bsid) {
-+		g_free (priv->bsid);
-+		priv->bsid = NULL;
-+	}
- 
- 	clean_up_nsps (NM_DEVICE_WIMAX (object), FALSE);
--	g_object_unref (priv->proxy);
-+	g_clear_object (&priv->proxy);
- 
- 	G_OBJECT_CLASS (nm_device_wimax_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-device.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-device.c	2012-10-30 21:02:36.787282377 +0100
-+++ network-manager/libnm-glib/nm-device.c	2012-12-21 01:13:58.038742626 +0100
-@@ -60,7 +60,6 @@
- #define NM_DEVICE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE, NMDevicePrivate))
- 
- typedef struct {
--	gboolean disposed;
- 	DBusGProxy *proxy;
- 
- 	char *iface;
-@@ -265,26 +264,13 @@
- {
- 	NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (object);
- 
--	if (priv->disposed) {
--		G_OBJECT_CLASS (nm_device_parent_class)->dispose (object);
--		return;
--	}
--
--	priv->disposed = TRUE;
--
--	g_object_unref (priv->proxy);
--	if (priv->ip4_config)
--		g_object_unref (priv->ip4_config);
--	if (priv->dhcp4_config)
--		g_object_unref (priv->dhcp4_config);
--	if (priv->ip6_config)
--		g_object_unref (priv->ip6_config);
--	if (priv->dhcp6_config)
--		g_object_unref (priv->dhcp6_config);
--	if (priv->client)
--		g_object_unref (priv->client);
--	if (priv->active_connection)
--		g_object_unref (priv->active_connection);
-+	g_clear_object (&priv->proxy);
-+	g_clear_object (&priv->ip4_config);
-+	g_clear_object (&priv->dhcp4_config);
-+	g_clear_object (&priv->ip6_config);
-+	g_clear_object (&priv->dhcp6_config);
-+	g_clear_object (&priv->client);
-+	g_clear_object (&priv->active_connection);
- 
- 	G_OBJECT_CLASS (nm_device_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-object.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-object.c	2012-10-30 21:02:36.787282377 +0100
-+++ network-manager/libnm-glib/nm-object.c	2012-12-21 01:13:58.038742626 +0100
-@@ -78,7 +78,7 @@
- 
- 	GSList *notify_props;
- 	guint32 notify_id;
--	gboolean inited, disposed;
-+	gboolean inited;
- 
- 	GSList *reload_results;
- 	guint reload_remaining;
-@@ -194,13 +194,6 @@
- {
- 	NMObjectPrivate *priv = NM_OBJECT_GET_PRIVATE (object);
- 
--	if (priv->disposed) {
--		G_OBJECT_CLASS (nm_object_parent_class)->dispose (object);
--		return;
--	}
--
--	priv->disposed = TRUE;
--
- 	if (priv->notify_id) {
- 		g_source_remove (priv->notify_id);
- 		priv->notify_id = 0;
-@@ -208,12 +201,18 @@
- 
- 	g_slist_foreach (priv->notify_props, (GFunc) g_free, NULL);
- 	g_slist_free (priv->notify_props);
-+	priv->notify_props = NULL;
- 
- 	g_slist_foreach (priv->property_interfaces, (GFunc) g_free, NULL);
- 	g_slist_free (priv->property_interfaces);
-+	priv->property_interfaces = NULL;
- 
--	g_object_unref (priv->properties_proxy);
--	dbus_g_connection_unref (priv->connection);
-+	g_clear_object (&priv->properties_proxy);
-+
-+	if (priv->connection) {
-+		dbus_g_connection_unref (priv->connection);
-+		priv->connection = NULL;
-+	}
- 
- 	G_OBJECT_CLASS (nm_object_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-remote-connection.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-remote-connection.c	2012-10-30 21:02:36.787282377 +0100
-+++ network-manager/libnm-glib/nm-remote-connection.c	2012-12-21 01:13:58.038742626 +0100
-@@ -72,7 +72,6 @@
- 	GSList *calls;
- 
- 	gboolean visible;
--	gboolean disposed;
- } NMRemoteConnectionPrivate;
- 
- #define NM_REMOTE_CONNECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_REMOTE_CONNECTION, NMRemoteConnectionPrivate))
-@@ -477,14 +476,14 @@
- 	NMRemoteConnection *self = NM_REMOTE_CONNECTION (object);
- 	NMRemoteConnectionPrivate *priv = NM_REMOTE_CONNECTION_GET_PRIVATE (object);
- 
--	if (!priv->disposed) {
--		priv->disposed = TRUE;
-+	while (g_slist_length (priv->calls))
-+		remote_call_complete (self, priv->calls->data);
- 
--		while (g_slist_length (priv->calls))
--			remote_call_complete (self, priv->calls->data);
-+	g_clear_object (&priv->proxy);
- 
--		g_object_unref (priv->proxy);
-+	if (priv->bus) {
- 		dbus_g_connection_unref (priv->bus);
-+		priv->bus = NULL;
- 	}
- 
- 	G_OBJECT_CLASS (nm_remote_connection_parent_class)->dispose (object);
-Index: network-manager/libnm-glib/nm-remote-settings.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-remote-settings.c	2012-12-21 01:13:57.994742293 +0100
-+++ network-manager/libnm-glib/nm-remote-settings.c	2012-12-21 01:13:58.038742626 +0100
-@@ -61,8 +61,6 @@
- 	DBusGProxy *dbus_proxy;
- 
- 	guint fetch_id;
--
--	gboolean disposed;
- } NMRemoteSettingsPrivate;
- 
- enum {
-@@ -1012,29 +1010,35 @@
- 	NMRemoteSettings *self = NM_REMOTE_SETTINGS (object);
- 	NMRemoteSettingsPrivate *priv = NM_REMOTE_SETTINGS_GET_PRIVATE (self);
- 
--	if (priv->disposed)
--		return;
--
--	priv->disposed = TRUE;
--
--	if (priv->fetch_id)
-+	if (priv->fetch_id) {
- 		g_source_remove (priv->fetch_id);
-+		priv->fetch_id = 0;
-+	}
- 
- 	while (g_slist_length (priv->add_list))
- 		add_connection_info_dispose (self, (AddConnectionInfo *) priv->add_list->data);
- 
--	if (priv->connections)
-+	if (priv->connections) {
- 		g_hash_table_destroy (priv->connections);
-+		priv->connections = NULL;
-+	}
- 
--	if (priv->pending)
-+	if (priv->pending) {
- 		g_hash_table_destroy (priv->pending);
-+		priv->pending = NULL;
-+	}
- 
- 	g_free (priv->hostname);
-+	priv->hostname = NULL;
- 
--	g_object_unref (priv->dbus_proxy);
--	g_object_unref (priv->proxy);
--	g_object_unref (priv->props_proxy);
--	dbus_g_connection_unref (priv->bus);
-+	g_clear_object (&priv->dbus_proxy);
-+	g_clear_object (&priv->proxy);
-+	g_clear_object (&priv->props_proxy);
-+
-+	if (priv->bus) {
-+		dbus_g_connection_unref (priv->bus);
-+		priv->bus = NULL;
-+	}
- 
- 	G_OBJECT_CLASS (nm_remote_settings_parent_class)->dispose (object);
- }
-Index: network-manager/libnm-glib/nm-secret-agent.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-secret-agent.c	2012-10-30 21:02:36.787282377 +0100
-+++ network-manager/libnm-glib/nm-secret-agent.c	2012-12-21 01:13:58.038742626 +0100
-@@ -79,8 +79,6 @@
- 	gboolean auto_register;
- 	gboolean suppress_auto;
- 	gboolean auto_register_id;
--
--	gboolean disposed;
- } NMSecretAgentPrivate;
- 
- enum {
-@@ -878,29 +876,28 @@
- 	NMSecretAgent *self = NM_SECRET_AGENT (object);
- 	NMSecretAgentPrivate *priv = NM_SECRET_AGENT_GET_PRIVATE (self);
- 
--	if (!priv->disposed) {
--		priv->disposed = TRUE;
--
--		if (priv->registered)
--			nm_secret_agent_unregister (self);
--
--		if (priv->auto_register_id)
--			g_source_remove (priv->auto_register_id);
-+	if (priv->registered)
-+		nm_secret_agent_unregister (self);
- 
--		g_free (priv->identifier);
--		g_free (priv->nm_owner);
-+	if (priv->auto_register_id) {
-+		g_source_remove (priv->auto_register_id);
-+		priv->auto_register_id = 0;
-+	}
- 
--		while (priv->pending_gets)
--			get_secrets_info_finalize (self, priv->pending_gets->data);
-+	g_free (priv->identifier);
-+	priv->identifier = NULL;
-+	g_free (priv->nm_owner);
-+	priv->nm_owner = NULL;
- 
--		if (priv->dbus_proxy)
--			g_object_unref (priv->dbus_proxy);
-+	while (priv->pending_gets)
-+		get_secrets_info_finalize (self, priv->pending_gets->data);
- 
--		if (priv->manager_proxy)
--			g_object_unref (priv->manager_proxy);
-+	g_clear_object (&priv->dbus_proxy);
-+	g_clear_object (&priv->manager_proxy);
- 
--		if (priv->bus)
--			dbus_g_connection_unref (priv->bus);
-+	if (priv->bus) {
-+		dbus_g_connection_unref (priv->bus);
-+		priv->bus = NULL;
- 	}
- 
- 	G_OBJECT_CLASS (nm_secret_agent_parent_class)->dispose (object);
-Index: network-manager/libnm-glib/nm-vpn-plugin.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-vpn-plugin.c	2012-10-30 21:02:36.791282354 +0100
-+++ network-manager/libnm-glib/nm-vpn-plugin.c	2012-12-21 01:13:58.038742626 +0100
-@@ -63,9 +63,6 @@
- 	DBusGConnection *connection;
- 	char *dbus_service_name;
- 
--	/* GObject-y stuff */
--	gboolean disposed;
--
- 	/* Temporary stuff */
- 	guint connect_timer;
- 	guint quit_timer;
-@@ -590,15 +587,10 @@
- 	NMVPNServiceState state;
- 	GError *err = NULL;
- 
--	if (priv->disposed) {
--		G_OBJECT_CLASS (nm_vpn_plugin_parent_class)->dispose (object);
--		return;
--	}
--
--	priv->disposed = TRUE;
--
--	if (priv->fail_stop_id)
-+	if (priv->fail_stop_id) {
- 		g_source_remove (priv->fail_stop_id);
-+		priv->fail_stop_id = 0;
-+	}
- 
- 	state = nm_vpn_plugin_get_state (plugin);
- 
-Index: network-manager/libnm-glib/nm-wimax-nsp.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-wimax-nsp.c	2012-10-30 21:02:36.791282354 +0100
-+++ network-manager/libnm-glib/nm-wimax-nsp.c	2012-12-21 01:13:58.038742626 +0100
-@@ -37,7 +37,6 @@
- #define NM_WIMAX_NSP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_WIMAX_NSP, NMWimaxNspPrivate))
- 
- typedef struct {
--	gboolean disposed;
- 	DBusGProxy *proxy;
- 
- 	char *name;
-@@ -217,14 +216,7 @@
- {
- 	NMWimaxNspPrivate *priv = NM_WIMAX_NSP_GET_PRIVATE (object);
- 
--	if (priv->disposed) {
--		G_OBJECT_CLASS (nm_wimax_nsp_parent_class)->dispose (object);
--		return;
--	}
--
--	priv->disposed = TRUE;
--
--	g_object_unref (priv->proxy);
-+	g_clear_object (&priv->proxy);
- 
- 	G_OBJECT_CLASS (nm_wimax_nsp_parent_class)->dispose (object);
- }
diff --git a/debian/patches/19-libnm-glib-discard-devices-and-active-connections-on-stop.patch b/debian/patches/19-libnm-glib-discard-devices-and-active-connections-on-stop.patch
deleted file mode 100644
index 96a7cc71..00000000
--- a/debian/patches/19-libnm-glib-discard-devices-and-active-connections-on-stop.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-commit 17d5973ef64b9f0c35bd13581eb244cf137f5794
-Author: Dan Winship <danw@gnome.org>
-Date:   Mon Apr 23 12:20:14 2012 -0400
-
-    libnm-glib: discard devices and active connections when NM goes down
-    
-    When NMClient changes state to "not running", don't just unref all the
-    devices and connections: emit notify::active-connections and
-    device-removed signals too, so the app will drop its copies of them.
-    
-    https://bugzilla.gnome.org/show_bug.cgi?id=674473
-
-Index: network-manager/libnm-glib/nm-client.c
-===================================================================
---- network-manager.orig/libnm-glib/nm-client.c	2012-12-21 02:12:37.001171147 +0100
-+++ network-manager/libnm-glib/nm-client.c	2012-12-21 02:12:40.441204970 +0100
-@@ -1016,30 +1016,50 @@
- /****************************************************************/
- 
- static void
--free_object_array (GPtrArray **array)
-+free_devices (NMClient *client, gboolean emit_signals)
- {
--	g_return_if_fail (array != NULL);
-+	NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (client);
-+	GPtrArray *devices;
-+	NMDevice *device;
-+	int i;
-+
-+	if (!priv->devices)
-+		return;
- 
--	if (*array) {
--		g_ptr_array_foreach (*array, (GFunc) g_object_unref, NULL);
--		g_ptr_array_free (*array, TRUE);
--		*array = NULL;
-+	devices = priv->devices;
-+	priv->devices = NULL;
-+	for (i = 0; i < devices->len; i++) {
-+		device = devices->pdata[i];
-+		if (emit_signals)
-+			g_signal_emit (client, signals[DEVICE_REMOVED], 0, device);
-+		g_object_unref (device);
- 	}
-+	g_ptr_array_free (devices, TRUE);
- }
- 
- static void
--dispose_and_free_object_array (GPtrArray **array)
-+free_active_connections (NMClient *client, gboolean emit_signals)
- {
--	g_return_if_fail (array != NULL);
-+	NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (client);
-+	GPtrArray *active_connections;
-+	NMActiveConnection *active_connection;
-+	int i;
- 
--	if (*array) {
--		/* The objects in the array may have circular refs with other
--		 * objects, which the caller will need to know to break by
--		 * calling this function rather than free_object_array().
--		 */
--		g_ptr_array_foreach (*array, (GFunc) g_object_run_dispose, NULL);
--		free_object_array (array);
-+	if (!priv->active_connections)
-+		return;
-+
-+	active_connections = priv->active_connections;
-+	priv->active_connections = NULL;
-+	for (i = 0; i < active_connections->len; i++) {
-+		active_connection = active_connections->pdata[i];
-+		/* Break circular refs */
-+		g_object_run_dispose (G_OBJECT (active_connection));
-+		g_object_unref (active_connection);
- 	}
-+	g_ptr_array_free (active_connections, TRUE);
-+
-+	if (emit_signals)
-+		g_object_notify (G_OBJECT (client), NM_CLIENT_ACTIVE_CONNECTIONS);
- }
- 
- static void
-@@ -1086,8 +1106,8 @@
- 		_nm_object_queue_notify (NM_OBJECT (client), NM_CLIENT_MANAGER_RUNNING);
- 		_nm_object_suppress_property_updates (NM_OBJECT (client), TRUE);
- 		poke_wireless_devices_with_rf_status (client);
--		free_object_array (&priv->devices);
--		dispose_and_free_object_array (&priv->active_connections);
-+		free_devices (client, TRUE);
-+		free_active_connections (client, TRUE);
- 		priv->wireless_enabled = FALSE;
- 		priv->wireless_hw_enabled = FALSE;
- 		priv->wwan_enabled = FALSE;
-@@ -1415,6 +1435,7 @@
- static void
- dispose (GObject *object)
- {
-+	NMClient *client = NM_CLIENT (object);
- 	NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (object);
- 
- 	if (priv->perm_call) {
-@@ -1425,8 +1446,8 @@
- 	g_clear_object (&priv->client_proxy);
- 	g_clear_object (&priv->bus_proxy);
- 
--	free_object_array (&priv->devices);
--	dispose_and_free_object_array (&priv->active_connections);
-+	free_devices (client, FALSE);
-+	free_active_connections (client, FALSE);
- 
- 	g_slist_foreach (priv->pending_activations, (GFunc) activate_info_free, NULL);
- 	g_slist_free (priv->pending_activations);
diff --git a/debian/patches/20-libnm-glib-clear-object-cache-on-stop.patch b/debian/patches/20-libnm-glib-clear-object-cache-on-stop.patch
deleted file mode 100644
index 67f24066..00000000
--- a/debian/patches/20-libnm-glib-clear-object-cache-on-stop.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-commit 48981a6166208152890b6c57af19cc3c5db5837f
-Author: Dan Williams <dcbw@redhat.com>
-Date:   Mon Apr 23 17:07:18 2012 -0500
-
-    libnm-glib: ensure object cache is cleared when NM stops (bgo #674473)
-    
-    Otherwise if a client holds references to the objects (or in the
-    JavaScript case, uses deferred garbage collection) they'll still
-    be in the cache when NM restarts, and the old object may have the
-    same path as some new object, which isn't good.
-
-diff --git a/libnm-glib/nm-client.c b/libnm-glib/nm-client.c
-index bed1b4e..311b1d2 100644
---- a/libnm-glib/nm-client.c
-+++ b/libnm-glib/nm-client.c
-@@ -1116,6 +1116,11 @@ proxy_name_owner_changed (DBusGProxy *proxy,
- 		priv->wimax_hw_enabled = FALSE;
- 		g_free (priv->version);
- 		priv->version = NULL;
-+
-+		/* Clear object cache to ensure bad refcounting by clients doesn't
-+		 * keep objects in the cache.
-+		 */
-+		_nm_object_cache_clear (NM_OBJECT (client));
- 	} else {
- 		_nm_object_suppress_property_updates (NM_OBJECT (client), FALSE);
- 		_nm_object_reload_properties_async (NM_OBJECT (client), updated_properties, client);
-diff --git a/libnm-glib/nm-object-cache.c b/libnm-glib/nm-object-cache.c
-index 741f129..2748b1d 100644
---- a/libnm-glib/nm-object-cache.c
-+++ b/libnm-glib/nm-object-cache.c
-@@ -64,3 +64,28 @@ _nm_object_cache_get (const char *path)
- 	return object ? g_object_ref (object) : NULL;
- }
- 
-+void
-+_nm_object_cache_clear (NMObject *except)
-+{
-+	GHashTableIter iter;
-+	NMObject *obj;
-+	const char *path;
-+	char *foo;
-+
-+	_init_cache ();
-+	g_hash_table_iter_init (&iter, cache);
-+	while (g_hash_table_iter_next (&iter, (gpointer) &path, (gpointer) &obj)) {
-+		if (obj != except) {
-+			/* Remove the callback so that if the object isn't yet released
-+			 * by a client, when it does finally get unrefed, it won't trigger
-+			 * the cache removal for a new object with the same path as the
-+			 * one being released.
-+			 */
-+			foo = g_object_steal_data (G_OBJECT (obj), "nm-object-cache-tag");
-+			g_free (foo);
-+
-+			g_hash_table_iter_remove (&iter);
-+		}
-+	}
-+}
-+
-diff --git a/libnm-glib/nm-object-cache.h b/libnm-glib/nm-object-cache.h
-index 8386591..8475213 100644
---- a/libnm-glib/nm-object-cache.h
-+++ b/libnm-glib/nm-object-cache.h
-@@ -32,6 +32,7 @@ G_BEGIN_DECLS
- /* Returns referenced object from the cache */
- NMObject *_nm_object_cache_get (const char *path);
- void _nm_object_cache_add (NMObject *object);
-+void _nm_object_cache_clear (NMObject *except);
- 
- G_END_DECLS
- 
diff --git a/debian/patches/series b/debian/patches/series
index f8733d37..98599249 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -2,6 +2,3 @@
 02-dbus_access_network_manager.patch
 03-systemd.patch
 04-systemd-set-kill-mode-process.patch
-18-libnm-glib-NULL-out-priv-fields-on-dispose.patch
-19-libnm-glib-discard-devices-and-active-connections-on-stop.patch
-20-libnm-glib-clear-object-cache-on-stop.patch