Przeglądaj źródła

Checksums: Use the first supported type if nothing is preferred

Christian Kamm 9 lat temu
rodzic
commit
09eea7f5f2

+ 11 - 0
src/libsync/capabilities.cpp

@@ -95,4 +95,15 @@ QByteArray Capabilities::preferredUploadChecksumType() const
     return _capabilities["checksums"].toMap()["preferredUploadType"].toByteArray();
 }
 
+QByteArray Capabilities::uploadChecksumType() const
+{
+    QByteArray preferred = preferredUploadChecksumType();
+    if (!preferred.isEmpty())
+        return preferred;
+    QList<QByteArray> supported = supportedChecksumTypes();
+    if (!supported.isEmpty())
+        return supported.first();
+    return QByteArray();
+}
+
 }

+ 7 - 0
src/libsync/capabilities.h

@@ -69,6 +69,13 @@ public:
      */
     QByteArray preferredUploadChecksumType() const;
 
+    /**
+     * Helper that returns the preferredUploadChecksumType() if set, or one
+     * of the supportedChecksumTypes() if it isn't. May return an empty
+     * QByteArray if no checksum types are supported.
+     */
+    QByteArray uploadChecksumType() const;
+
 private:
     QVariantMap _capabilities;
 };

+ 1 - 1
src/libsync/propagateupload.cpp

@@ -261,7 +261,7 @@ void PropagateUploadFileQNAM::slotComputeTransmissionChecksum(const QByteArray&
     // Compute the transmission checksum.
     auto computeChecksum = new ComputeChecksum(this);
     if (uploadChecksumEnabled()) {
-        computeChecksum->setChecksumType(_propagator->account()->capabilities().preferredUploadChecksumType());
+        computeChecksum->setChecksumType(_propagator->account()->capabilities().uploadChecksumType());
     } else {
         computeChecksum->setChecksumType(QByteArray());
     }