summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kellner <gicmo@gnome.org>2008-01-17 19:17:37 +0000
committerChristian Kellner <gicmo@src.gnome.org>2008-01-17 19:17:37 +0000
commit45aaa4ee822956140f3acabc548792f389e584b3 (patch)
tree4db3828afc33c7592c517f2fd2a3650a4e734f7f
parent9ffa2307efdf372ecb10aed76807661ff3a56963 (diff)
downloadgvfs-45aaa4ee822956140f3acabc548792f389e584b3.tar.gz
Disconnect signal handler, since the data struct we pass into the signal
2008-01-17 Christian Kellner <gicmo@gnome.org> * daemon/gvfsbackenddav.c: Disconnect signal handler, since the data struct we pass into the signal handler will be invalid after the mount is finished. svn path=/trunk/; revision=1147
-rw-r--r--ChangeLog7
-rw-r--r--daemon/gvfsbackenddav.c8
2 files changed, 13 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 54f9206d..d2f6d5f9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2008-01-17 Christian Kellner <gicmo@gnome.org>
+ * daemon/gvfsbackenddav.c:
+ Disconnect signal handler, since the data struct we pass
+ into the signal handler will be invalid after the mount
+ is finished.
+
+2008-01-17 Christian Kellner <gicmo@gnome.org>
+
* common/gmountsource.c:
* common/gmountsource.h:
Make g_mount_source_ask_password_async () public and add
diff --git a/daemon/gvfsbackenddav.c b/daemon/gvfsbackenddav.c
index 8e756fbb..3b963a52 100644
--- a/daemon/gvfsbackenddav.c
+++ b/daemon/gvfsbackenddav.c
@@ -485,6 +485,8 @@ create_propfind_request (GFileAttributeMatcher *matcher, gulong *size)
typedef struct _MountOpData {
+ gulong signal_id;
+
SoupSession *session;
GMountSource *mount_source;
@@ -710,6 +712,8 @@ discover_mount_root_ready (SoupSession *session,
g_vfs_backend_set_mount_spec (G_VFS_BACKEND (backend), mount_spec);
g_mount_spec_unref (mount_spec);
+ g_signal_handler_disconnect (session, data->signal_id);
+
g_print ("- discover_mount_root_ready success: %s \n", mount_base->path);
g_vfs_job_succeeded (G_VFS_JOB (job));
}
@@ -776,8 +780,8 @@ try_mount (GVfsBackend *backend,
data->mount_source = g_object_ref (mount_source);
data->username = g_strdup (user);
- g_signal_connect (session, "authenticate",
- G_CALLBACK (soup_authenticate), data);
+ data->signal_id = g_signal_connect (session, "authenticate",
+ G_CALLBACK (soup_authenticate), data);
g_vfs_job_set_backend_data (G_VFS_JOB (job), data, mount_op_data_free);