[Pkg-owncloud-commits] [owncloud-client] 95/103: Support old server which do not have the x-oc-mtime support
Sandro Knauß
hefee-guest at moszumanska.debian.org
Wed Apr 30 18:09:03 UTC 2014
This is an automated email from the git hooks/post-receive script.
hefee-guest pushed a commit to branch master
in repository owncloud-client.
commit 9193286fc11a6a135d6f6891906ffe1ae764032e
Author: Olivier Goffart <ogoffart at woboq.com>
Date: Tue Apr 29 16:47:07 2014 +0200
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
---
src/mirall/propagator_qnam.cpp | 18 ++++++++++++++----
src/mirall/propagator_qnam.h | 2 +-
src/mirall/propagatorjobs.cpp | 10 ++++++++++
src/mirall/propagatorjobs.h | 9 +++++++++
4 files changed, 34 insertions(+), 5 deletions(-)
diff --git a/src/mirall/propagator_qnam.cpp b/src/mirall/propagator_qnam.cpp
index c53e4cb..67afa00 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:
diff --git a/src/mirall/propagator_qnam.h b/src/mirall/propagator_qnam.h
index 15d5bea..d5fa451 100644
--- a/src/mirall/propagator_qnam.h
+++ b/src/mirall/propagator_qnam.h
@@ -91,7 +91,7 @@ private slots:
void slotUploadProgress(qint64,qint64);
void abort();
void startNextChunk();
-
+ void finalize();
};
diff --git a/src/mirall/propagatorjobs.cpp b/src/mirall/propagatorjobs.cpp
index d9fbb02..660aec3 100644
--- a/src/mirall/propagatorjobs.cpp
+++ b/src/mirall/propagatorjobs.cpp
@@ -322,5 +322,15 @@ bool PropagateNeonJob::updateErrorFromSession(int neon_code, ne_request* req, in
return false;
}
+void UpdateMTimeAndETagJob::start()
+{
+ QScopedPointer<char, QScopedPointerPodDeleter> uri2(
+ ne_path_escape((_propagator->_remoteDir + _item._renameTarget).toUtf8()));
+ if (!updateMTimeAndETag(uri2.data(), _item._modtime))
+ return;
+ done(SyncFileItem::Success);
+}
+
+
}
diff --git a/src/mirall/propagatorjobs.h b/src/mirall/propagatorjobs.h
index 6505206..3b77e24 100644
--- a/src/mirall/propagatorjobs.h
+++ b/src/mirall/propagatorjobs.h
@@ -108,4 +108,13 @@ public:
};
+// To support older owncloud in the
+class UpdateMTimeAndETagJob : public PropagateNeonJob{
+ Q_OBJECT
+public:
+ UpdateMTimeAndETagJob (OwncloudPropagator* propagator, const SyncFileItem& item) : PropagateNeonJob(propagator, item) {}
+ void start();
+};
+
+
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git
More information about the Pkg-owncloud-commits
mailing list