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:
authorHannah von Reth <hannah.vonreth@owncloud.com>2020-09-09 16:33:11 +0300
committerHannah von Reth <vonreth@kde.org>2020-09-09 18:47:21 +0300
commitd8a3da70cd6a45baf4989cc07c66d9fec24a6304 (patch)
treedd475a80861d9d6d369bb32dfb67b027d22c5960 /src
parent737a3e97ca45908627cf95650e99f07f2bf347d2 (diff)
Fix missing permissions on db entry
Fixes: #8066, #7967
Diffstat (limited to 'src')
-rw-r--r--src/libsync/propagateupload.cpp14
-rw-r--r--src/libsync/propagateuploadtus.cpp3
2 files changed, 16 insertions, 1 deletions
diff --git a/src/libsync/propagateupload.cpp b/src/libsync/propagateupload.cpp
index eb6176a65..b923ecb55 100644
--- a/src/libsync/propagateupload.cpp
+++ b/src/libsync/propagateupload.cpp
@@ -653,6 +653,20 @@ QMap<QByteArray, QByteArray> PropagateUploadFileCommon::headers()
void PropagateUploadFileCommon::finalize()
{
+ if (_item->_remotePerm.isNull()) {
+ qCWarning(lcPropagateUpload) << "PropagateUploadFileCommon::finalize: Missing permissions for" << _item->_file;
+ auto permCheck = new PropfindJob(propagator()->account(), _item->_file);
+ _jobs.append(permCheck);
+ permCheck->setProperties({ "http://owncloud.org/ns:permissions" });
+ connect(permCheck, &PropfindJob::result, this, [this, permCheck](const QVariantMap &map) {
+ _item->_remotePerm = RemotePermissions::fromServerString(map.value("permissions").toString());
+ finalize();
+ slotJobDestroyed(permCheck);
+ });
+ connect(permCheck, &QObject::destroyed, this, &PropagateUploadFileCommon::slotJobDestroyed);
+ permCheck->start();
+ return;
+ }
// Update the quota, if known
auto quotaIt = propagator()->_folderQuota.find(QFileInfo(_item->_file).path());
if (quotaIt != propagator()->_folderQuota.end())
diff --git a/src/libsync/propagateuploadtus.cpp b/src/libsync/propagateuploadtus.cpp
index aafb09ebf..581cf420d 100644
--- a/src/libsync/propagateuploadtus.cpp
+++ b/src/libsync/propagateuploadtus.cpp
@@ -227,9 +227,10 @@ void PropagateUploadFileTUS::slotChunkFinished()
if (!_finished) {
auto check = new PropfindJob(propagator()->account(), _item->_file);
_jobs.append(check);
- check->setProperties({ "http://owncloud.org/ns:fileid", "getetag" });
+ check->setProperties({ "http://owncloud.org/ns:fileid", "http://owncloud.org/ns:permissions", "getetag" });
connect(check, &PropfindJob::result, this, [this, check](const QVariantMap &map) {
_finished = true;
+ _item->_remotePerm = RemotePermissions::fromServerString(map.value("permissions").toString());
finalize(Utility::normalizeEtag(map.value("getetag").toByteArray()), map.value("fileid").toByteArray());
slotJobDestroyed(check);
});