diff options
author | Olivier Goffart <ogoffart@woboq.com> | 2014-04-29 18:47:07 +0400 |
---|---|---|
committer | Olivier Goffart <ogoffart@woboq.com> | 2014-04-29 18:58:24 +0400 |
commit | 9193286fc11a6a135d6f6891906ffe1ae764032e (patch) | |
tree | 6f8eb1d70611e5751d999ae86a02cc3484a60d4e /src/mirall/propagator_qnam.cpp | |
parent | 1b8d11182b25bc8c41d39dece61cd924660e0c25 (diff) |
Support old server which do not have the x-oc-mtime support
Owncloud 4.5
Or owncloud 5 with chunking
Fixes https://github.com/owncloud/core/issues/8392
Diffstat (limited to 'src/mirall/propagator_qnam.cpp')
-rw-r--r-- | src/mirall/propagator_qnam.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/mirall/propagator_qnam.cpp b/src/mirall/propagator_qnam.cpp index c53e4cbf2..67afa0099 100644 --- a/src/mirall/propagator_qnam.cpp +++ b/src/mirall/propagator_qnam.cpp @@ -19,6 +19,7 @@ #include "syncjournalfilerecord.h" #include "utility.h" #include "filesystem.h" +#include "propagatorjobs.h" #include <QNetworkAccessManager> #include <QFileInfo> #include <cmath> @@ -299,15 +300,24 @@ void PropagateUploadFileQNAM::slotPutFinished() } _item._etag = parseEtag(job->reply()->rawHeader("ETag")); + _item._responseTimeStamp = job->responseTimestamp(); if (job->reply()->rawHeader("X-OC-MTime") != "accepted") { - //FIXME -// updateMTimeAndETag(uri.data(), _item._modtime); - done(SyncFileItem::NormalError, tr("No X-OC-MTime extension, ownCloud 5 is required")); + // X-OC-MTime is supported since owncloud 5.0. But not when chunking. + // Normaly Owncloud 6 always put X-OC-MTime + qDebug() << "Server do not support X-OC-MTime"; + PropagatorJob *newJob = new UpdateMTimeAndETagJob(_propagator, _item); + QObject::connect(newJob, SIGNAL(completed(SyncFileItem)), this, SLOT(finalize())); + QMetaObject::invokeMethod(newJob, "start"); return; } + finalize(); +} + + +void PropagateUploadFileQNAM::finalize() +{ _item._requestDuration = _duration.elapsed(); - _item._responseTimeStamp = _job->responseTimestamp(); _propagator->_journal->setFileRecord(SyncJournalFileRecord(_item, _propagator->_localDir + _item._file)); // Remove from the progress database: |