Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@woboq.com>2015-04-16 12:21:39 +0300
committerOlivier Goffart <ogoffart@woboq.com>2015-04-16 12:36:01 +0300
commit8bb4af067a1fbb5173324137d23bd4323d5d4b4f (patch)
tree61b1c56b9db651d53772f5e07622646dd817410d /src
parentdf0df76b513975296a6e1d908f9f98d782acc7c1 (diff)
Propagate download: Fix restoring files for which the conflict file exists
For issue #3106 1) Always use the actual timestamp from the file in the file system to create the conflict file. This is important because if one edit a file several time, they should have different name. Also it makes more sens to have the mtime of the modified file. 2) Give the correct size to the job so we know when the temporary file is complete in case of resuming.
Diffstat (limited to 'src')
-rw-r--r--src/libsync/propagator_legacy.cpp3
-rw-r--r--src/libsync/syncengine.cpp2
2 files changed, 3 insertions, 2 deletions
diff --git a/src/libsync/propagator_legacy.cpp b/src/libsync/propagator_legacy.cpp
index dc714b607..b9dc7e8cd 100644
--- a/src/libsync/propagator_legacy.cpp
+++ b/src/libsync/propagator_legacy.cpp
@@ -695,7 +695,8 @@ void PropagateDownloadFileLegacy::start()
&& !FileSystem::fileEquals(fn, tmpFile.fileName()); // compare the files to see if there was an actual conflict.
//In case of conflict, make a backup of the old file
if (isConflict) {
- QString conflictFileName = makeConflictFileName(fn, Utility::qDateTimeFromTime_t(_item._modtime));
+ auto conflictDate = FileSystem::fileExists(fn) ? FileSystem::getModTime(fn) : _item._modtime;
+ QString conflictFileName = makeConflictFileName(fn, Utility::qDateTimeFromTime_t(conflictDate));
QString renameError;
if (!FileSystem::rename(fn, conflictFileName, &renameError)) {
//If the rename fails, don't replace it.
diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp
index d8fa74a89..81d087297 100644
--- a/src/libsync/syncengine.cpp
+++ b/src/libsync/syncengine.cpp
@@ -999,8 +999,8 @@ void SyncEngine::checkForPermission()
it->_direction = SyncFileItem::Down;
it->_isRestoration = true;
// take the things to write to the db from the "other" node (i.e: info from server)
- // ^^ FIXME This might not be needed anymore since we merge the info in treewalkFile
it->_modtime = it->log._other_modtime;
+ it->_size = it->log._other_size;
it->_fileId = it->log._other_fileId;
it->_etag = it->log._other_etag;
it->_errorString = tr("Not allowed to upload this file because it is read-only on the server, restoring");