diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2020-09-09 16:33:11 +0300 |
---|---|---|
committer | Hannah von Reth <vonreth@kde.org> | 2020-09-09 18:47:21 +0300 |
commit | d8a3da70cd6a45baf4989cc07c66d9fec24a6304 (patch) | |
tree | dd475a80861d9d6d369bb32dfb67b027d22c5960 /src | |
parent | 737a3e97ca45908627cf95650e99f07f2bf347d2 (diff) |
Fix missing permissions on db entry
Fixes: #8066, #7967
Diffstat (limited to 'src')
-rw-r--r-- | src/libsync/propagateupload.cpp | 14 | ||||
-rw-r--r-- | src/libsync/propagateuploadtus.cpp | 3 |
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); }); |