if a file is locked/ provide token during upload
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Mon, 23 Sep 2024 16:32:10 +0000 (18:32 +0200)
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>
Wed, 25 Sep 2024 13:06:29 +0000 (15:06 +0200)
will add needed lock token in final move headers for chunk upload

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
src/libsync/propagateuploadng.cpp

index f778f79ef6c9a829961d8395cf5264a459b6dee1..a67225d2a2337008c3a39b6d3c66155a02dec1aa 100644 (file)
@@ -328,6 +328,9 @@ void PropagateUploadFileNG::finishUpload()
 
     const auto fileSize = _fileToUpload._size;
     headers[QByteArrayLiteral("OC-Total-Length")] = QByteArray::number(fileSize);
+    if (_item->_locked == SyncFileItem::LockStatus::LockedItem) {
+        headers[QByteArrayLiteral("If")] = (QLatin1String("<") + propagator()->account()->davUrl().toString() + _fileToUpload._file + "> (<opaquelocktoken:" + _item->_lockToken.toUtf8() + ">)").toUtf8();
+    }
 
     const auto job = new MoveJob(propagator()->account(), Utility::concatUrlPath(chunkUploadFolderUrl(), "/.file"), destination, headers, this);
     _jobs.append(job);