Recover from missing metadata on uploads
authorKevin Ottens <kevin.ottens@nextcloud.com>
Thu, 9 Jul 2020 10:17:42 +0000 (12:17 +0200)
committerCamila <smayres@gmail.com>
Thu, 9 Jul 2020 14:22:54 +0000 (16:22 +0200)
Other clients seem to allow creating empty encrypted folders with no
metadata associated to them, so let's get ready to handle it. In case of
a 404 to get the metadata, we create an empty metadata payload and pass
it further down.

Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
src/libsync/propagateuploadencrypted.cpp

index 3bea68ffe1591520517e6ef3b6e838e5ccc8b29b..6fe85c4cb35c6b9e16d5ab127ebfc1503c142404 100644 (file)
@@ -133,8 +133,11 @@ void PropagateUploadEncrypted::slotFolderEncryptedMetadataError(const QByteArray
 {
     Q_UNUSED(fileId);
     Q_UNUSED(httpReturnCode);
-    qCDebug(lcPropagateUploadEncrypted()) << "Error Getting the encrypted metadata. unlock the folder.";
-    unlockFolder();
+    qCDebug(lcPropagateUploadEncrypted()) << "Error Getting the encrypted metadata. Pretend we got empty metadata.";
+    FolderMetadata emptyMetadata(_propagator->account());
+    emptyMetadata.encryptedMetadata();
+    auto json = QJsonDocument::fromJson(emptyMetadata.encryptedMetadata());
+    slotFolderEncryptedMetadataReceived(json, httpReturnCode);
 }
 
 void PropagateUploadEncrypted::slotFolderEncryptedMetadataReceived(const QJsonDocument &json, int statusCode)