зеркало из https://github.com/nextcloud/desktop.git
fix bulk upload of empty files
force an empty body when we bulk upload empty files force a "valid" checksum to be computed for empty files as bulk upload server side expects a checksum even for empty files Close #5824 Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
This commit is contained in:
Родитель
0bb0491a9d
Коммит
8cd1a30c40
|
@ -95,8 +95,6 @@ QByteArray ChecksumCalculator::calculate()
|
|||
return result;
|
||||
}
|
||||
|
||||
bool isAnyChunkAdded = false;
|
||||
|
||||
for (;;) {
|
||||
QMutexLocker locker(&_deviceMutex);
|
||||
if (!_device->isOpen() || _device->atEnd()) {
|
||||
|
@ -114,7 +112,6 @@ QByteArray ChecksumCalculator::calculate()
|
|||
if (!addChunk(buf, sizeRead)) {
|
||||
break;
|
||||
}
|
||||
isAnyChunkAdded = true;
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -124,14 +121,12 @@ QByteArray ChecksumCalculator::calculate()
|
|||
}
|
||||
}
|
||||
|
||||
if (isAnyChunkAdded) {
|
||||
if (_algorithmType == AlgorithmType::Adler32) {
|
||||
result = QByteArray::number(_adlerHash, 16);
|
||||
} else {
|
||||
Q_ASSERT(_cryptographicHash);
|
||||
if (_cryptographicHash) {
|
||||
result = _cryptographicHash->result().toHex();
|
||||
}
|
||||
if (_algorithmType == AlgorithmType::Adler32) {
|
||||
result = QByteArray::number(_adlerHash, 16);
|
||||
} else {
|
||||
Q_ASSERT(_cryptographicHash);
|
||||
if (_cryptographicHash) {
|
||||
result = _cryptographicHash->result().toHex();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -152,13 +147,6 @@ void ChecksumCalculator::initChecksumAlgorithm()
|
|||
return;
|
||||
}
|
||||
|
||||
{
|
||||
QMutexLocker locker(&_deviceMutex);
|
||||
if (_device->size() == 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (_algorithmType == AlgorithmType::Adler32) {
|
||||
_adlerHash = adler32(0L, Z_NULL, 0);
|
||||
} else {
|
||||
|
|
|
@ -53,7 +53,11 @@ void PutMultiFileJob::start()
|
|||
|
||||
auto onePart = QHttpPart{};
|
||||
|
||||
onePart.setBodyDevice(oneDevice._device.get());
|
||||
if (oneDevice._device->size() == 0) {
|
||||
onePart.setBody({});
|
||||
} else {
|
||||
onePart.setBodyDevice(oneDevice._device.get());
|
||||
}
|
||||
|
||||
for (auto it = oneDevice._headers.begin(); it != oneDevice._headers.end(); ++it) {
|
||||
onePart.setRawHeader(it.key(), it.value());
|
||||
|
|
Загрузка…
Ссылка в новой задаче