summary refs log tree commit diff
path: root/libnm/nm-vpn-service-plugin.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm/nm-vpn-service-plugin.c')
-rw-r--r--libnm/nm-vpn-service-plugin.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/libnm/nm-vpn-service-plugin.c b/libnm/nm-vpn-service-plugin.c
index 31e12954..0a785396 100644
--- a/libnm/nm-vpn-service-plugin.c
+++ b/libnm/nm-vpn-service-plugin.c
@@ -996,11 +996,6 @@ init_sync (GInitable *initable, GCancellable *cancellable, GError **error)
 		goto out;
 
 	priv->dbus_vpn_service_plugin = nmdbus_vpn_plugin_skeleton_new ();
-	if (!g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (priv->dbus_vpn_service_plugin),
-	                                       connection,
-	                                       NM_VPN_DBUS_PLUGIN_PATH,
-	                                       error))
-		goto out;
 
 	_nm_dbus_bind_properties (plugin, priv->dbus_vpn_service_plugin);
 	_nm_dbus_bind_methods (plugin, priv->dbus_vpn_service_plugin,
@@ -1015,6 +1010,12 @@ init_sync (GInitable *initable, GCancellable *cancellable, GError **error)
 	                       "SetFailure", impl_vpn_service_plugin_set_failure,
 	                       NULL);
 
+	if (!g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (priv->dbus_vpn_service_plugin),
+	                                       connection,
+	                                       NM_VPN_DBUS_PLUGIN_PATH,
+	                                       error))
+		goto out;
+
 	nm_vpn_service_plugin_set_connection (plugin, connection);
 	nm_vpn_service_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_INIT);
 
@@ -1109,6 +1110,11 @@ dispose (GObject *object)
 		g_error_free (err);
 	}
 
+	if (priv->dbus_vpn_service_plugin) {
+		g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (priv->dbus_vpn_service_plugin));
+		g_clear_object (&priv->dbus_vpn_service_plugin);
+	}
+
 	G_OBJECT_CLASS (nm_vpn_service_plugin_parent_class)->dispose (object);
 }