summaryrefslogtreecommitdiff
path: root/daemon
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2008-03-02 19:12:05 +0000
committerBenjamin Otte <otte@src.gnome.org>2008-03-02 19:12:05 +0000
commit3789e81655c2cbfcfb64a5d919f44bbd2fa43402 (patch)
treec0aacc8497c76205747349a3515d274ed62b6cd2 /daemon
parentfd6d662be4e608cbffd92c8aece39d54d72de1f1 (diff)
downloadgvfs-3789e81655c2cbfcfb64a5d919f44bbd2fa43402.tar.gz
push back connection if we fail starting a read/write
2008-03-02 Benjamin Otte <otte@gnome.org> * daemon/gvfsbackendftp.c: (do_open_for_read), (do_start_write), (do_make_directory): push back connection if we fail starting a read/write svn path=/trunk/; revision=1485
Diffstat (limited to 'daemon')
-rw-r--r--daemon/gvfsbackendftp.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/daemon/gvfsbackendftp.c b/daemon/gvfsbackendftp.c
index f5448580..5b05a158 100644
--- a/daemon/gvfsbackendftp.c
+++ b/daemon/gvfsbackendftp.c
@@ -1056,10 +1056,15 @@ do_open_for_read (GVfsBackend *backend,
"RETR %s", file);
g_free (file);
- /* don't push the connection back, it's our handle now */
- g_vfs_job_open_for_read_set_handle (job, conn);
- g_vfs_job_open_for_read_set_can_seek (job, FALSE);
- ftp_connection_pop_job (conn);
+ if (ftp_connection_in_error (conn))
+ g_vfs_backend_ftp_push_connection (ftp, conn);
+ else
+ {
+ /* don't push the connection back, it's our handle now */
+ g_vfs_job_open_for_read_set_handle (job, conn);
+ g_vfs_job_open_for_read_set_can_seek (job, FALSE);
+ ftp_connection_pop_job (conn);
+ }
}
static void
@@ -1128,10 +1133,15 @@ do_start_write (GVfsBackendFtp *ftp,
varargs);
va_end (varargs);
- /* don't push the connection back, it's our handle now */
- g_vfs_job_open_for_write_set_handle (G_VFS_JOB_OPEN_FOR_WRITE (conn->job), conn);
- g_vfs_job_open_for_write_set_can_seek (G_VFS_JOB_OPEN_FOR_WRITE (conn->job), FALSE);
- ftp_connection_pop_job (conn);
+ if (ftp_connection_in_error (conn))
+ g_vfs_backend_ftp_push_connection (ftp, conn);
+ else
+ {
+ /* don't push the connection back, it's our handle now */
+ g_vfs_job_open_for_write_set_handle (G_VFS_JOB_OPEN_FOR_WRITE (conn->job), conn);
+ g_vfs_job_open_for_write_set_can_seek (G_VFS_JOB_OPEN_FOR_WRITE (conn->job), FALSE);
+ ftp_connection_pop_job (conn);
+ }
}
static void
@@ -1879,6 +1889,8 @@ do_make_directory (GVfsBackend *backend,
ftp_connection_send (conn,
0,
"MKD %s", file);
+ /* FIXME: Compare created file with name from server result to be sure
+ * it's correct and otherwise fail. */
g_free (file);
g_vfs_backend_ftp_push_connection (ftp, conn);