diff options
author | Benjamin Otte <otte@gnome.org> | 2008-03-02 19:12:05 +0000 |
---|---|---|
committer | Benjamin Otte <otte@src.gnome.org> | 2008-03-02 19:12:05 +0000 |
commit | 3789e81655c2cbfcfb64a5d919f44bbd2fa43402 (patch) | |
tree | c0aacc8497c76205747349a3515d274ed62b6cd2 /daemon | |
parent | fd6d662be4e608cbffd92c8aece39d54d72de1f1 (diff) | |
download | gvfs-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.c | 28 |
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); |