summaryrefslogtreecommitdiff
path: root/daemon
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2009-06-11 11:15:57 +0200
committerBenjamin Otte <otte@gnome.org>2009-06-11 11:15:57 +0200
commitb6637656b002baed39647d6b7c66d79d6bae4ed5 (patch)
tree376f84ecb65cfd84527552399703c9fa2922d4f3 /daemon
parent61fcfbd9fb9e7505f9917cc2db5665b46a90e005 (diff)
downloadgvfs-b6637656b002baed39647d6b7c66d79d6bae4ed5.tar.gz
[FTP] close data connection before invoking error handlers
Some ftp commands like RETR require an open data connection, but if they fail, we want to invoke error handlers. To allow those handlers to open data connections themselves, we close any potentially open ones beofre invoking them.
Diffstat (limited to 'daemon')
-rw-r--r--daemon/gvfsftptask.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/daemon/gvfsftptask.c b/daemon/gvfsftptask.c
index 7ef998b1..ac479643 100644
--- a/daemon/gvfsftptask.c
+++ b/daemon/gvfsftptask.c
@@ -560,6 +560,10 @@ g_vfs_ftp_task_send_and_check (GVfsFtpTask * task,
if (response == 550 && funcs)
{
+ /* close a potentially open data connection, the error handlers
+ * might try to open new ones and that would cause assertions */
+ g_vfs_ftp_task_close_data_connection (task);
+
while (*funcs && !g_vfs_ftp_task_is_in_error (task))
{
(*funcs) (task, data);