Add missing error handling for downloads of client side encryption
authorFelix Weilbach <felix.weilbach@nextcloud.com>
Thu, 4 Mar 2021 14:47:06 +0000 (15:47 +0100)
committerFelix Weilbach (Rebase PR Action) <felix.weilbach@t-online.de>
Thu, 11 Mar 2021 10:59:08 +0000 (10:59 +0000)
The missing error handlers can cause the sync to hang forever

Signed-off-by: Felix Weilbach <felix.weilbach@nextcloud.com>
src/libsync/propagatedownloadencrypted.cpp
src/libsync/propagatedownloadencrypted.h

index 8975faff7c58547d5d3ac8c6d85052e377ad206a..74f671cd78e26f37c57dd1c48e1ddd9256e72afa 100644 (file)
@@ -56,10 +56,18 @@ void PropagateDownloadEncrypted::checkFolderId(const QStringList &list)
   auto metadataJob = new GetMetadataApiJob(_propagator->account(), folderInfo.fileId);
   connect(metadataJob, &GetMetadataApiJob::jsonReceived,
           this, &PropagateDownloadEncrypted::checkFolderEncryptedMetadata);
+  connect(metadataJob, &GetMetadataApiJob::error,
+          this, &PropagateDownloadEncrypted::folderEncryptedMetadataError);
 
   metadataJob->start();
 }
 
+void PropagateDownloadEncrypted::folderEncryptedMetadataError(const QByteArray & /*fileId*/, int /*httpReturnCode*/)
+{
+    qCCritical(lcPropagateDownloadEncrypted) << "Failed to find encrypted metadata information of remote file" << _info.fileName();
+    emit failed();
+}
+
 void PropagateDownloadEncrypted::checkFolderEncryptedMetadata(const QJsonDocument &json)
 {
   qCDebug(lcPropagateDownloadEncrypted) << "Metadata Received reading"
index 4df0446df9cef62872902c242c5460fcbf4bc453..3d60adb2e84933a395d618032773711912e627e8 100644 (file)
@@ -24,6 +24,7 @@ public slots:
   void checkFolderId(const QStringList &list);
   void checkFolderEncryptedMetadata(const QJsonDocument &json);
   void folderIdError();
+  void folderEncryptedMetadataError(const QByteArray &fileId, int httpReturnCode);
 
 signals:
   void fileMetadataFound();