opt._vfs = _vfs;
opt._parallelNetworkJobs = _accountState->account()->isHttp2Supported() ? 20 : 6;
- opt._initialChunkSize = cfgFile.chunkSize();
- opt._minChunkSize = cfgFile.minChunkSize();
- opt._maxChunkSize = cfgFile.maxChunkSize();
+ // Chunk V2: Size of chunks must be between 5MB and 5GB, except for the last chunk which can be smaller
+ opt._minChunkSize = qMin(cfgFile.minChunkSize(), 5LL * 1000LL * 1000LL);
+ opt._maxChunkSize = qMax(cfgFile.maxChunkSize(), 5LL * 1000LL * 1000LL);
+ opt._initialChunkSize = qBound(opt._minChunkSize, cfgFile.chunkSize(), opt._maxChunkSize);
opt._targetChunkUploadDuration = cfgFile.targetChunkUploadDuration();
opt.fillFromEnvironmentVariables();
qint64 ConfigFile::maxChunkSize() const
{
QSettings settings(configFile(), QSettings::IniFormat);
- return settings.value(QLatin1String(maxChunkSizeC), 1000 * 1000 * 1000).toLongLong(); // default to 1000 MB
+ return settings.value(QLatin1String(maxChunkSizeC), 5 * 1000 * 1000 * 1000).toLongLong(); // default to 5000 MB
}
qint64 ConfigFile::minChunkSize() const
{
QSettings settings(configFile(), QSettings::IniFormat);
- return settings.value(QLatin1String(minChunkSizeC), 1000 * 1000).toLongLong(); // default to 1 MB
+ return settings.value(QLatin1String(minChunkSizeC), 5 * 1000 * 1000).toLongLong(); // default to 5 MB
}
chrono::milliseconds ConfigFile::targetChunkUploadDuration() const