Merge pull request #8925 from nextcloud/bugfix/8743/migrate-global-bandwidth-setting

fix(network): fall back to unlimited bandwidth in case the legacy global limit is still set
This commit is contained in:
Jyrki Gadinger 2025-10-23 14:37:28 +02:00 committed by GitHub
commit b240648fd0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 49 additions and 3 deletions

View File

@ -1426,7 +1426,14 @@ void Account::setUploadLimitSetting(const AccountNetworkTransferLimitSetting set
return;
}
_uploadLimitSetting = setting;
auto targetSetting = setting;
if (setting == AccountNetworkTransferLimitSetting::LegacyGlobalLimit) {
qCInfo(lcAccount) << "Upload limit setting was requested to be set to the legacy global limit, falling back to unlimited";
targetSetting = AccountNetworkTransferLimitSetting::NoLimit;
}
_uploadLimitSetting = targetSetting;
emit uploadLimitSettingChanged();
}
@ -1440,8 +1447,15 @@ void Account::setDownloadLimitSetting(const AccountNetworkTransferLimitSetting s
if (setting == _downloadLimitSetting) {
return;
}
_downloadLimitSetting = setting;
auto targetSetting = setting;
if (setting == AccountNetworkTransferLimitSetting::LegacyGlobalLimit) {
qCInfo(lcAccount) << "Download limit setting was requested to be set to the legacy global limit, falling back to unlimited";
targetSetting = AccountNetworkTransferLimitSetting::NoLimit;
}
_downloadLimitSetting = targetSetting;
emit downloadLimitSettingChanged();
}

View File

@ -99,6 +99,7 @@ class OWNCLOUDSYNC_EXPORT Account : public QObject
public:
enum class AccountNetworkTransferLimitSetting {
LegacyGlobalLimit = -2, // Until 3.17.0 a value of -2 was interpreted as "Use global network settings", it's now used to fall back to "No limit". See also GH#8743
AutoLimit = -1, // Value under 0 is interpreted as auto in general
NoLimit,
ManualLimit,

View File

@ -69,6 +69,37 @@ private slots:
QCOMPARE(account->isPublicShareLink(), expectedResult);
QCOMPARE(account->davUser(), expectedDavUser);
}
void testAccount_setLimitSettings_globalNetworkLimitFallback()
{
using LimitSetting = Account::AccountNetworkTransferLimitSetting;
AccountPtr account = Account::create();
const auto setLimitSettings = [account](const LimitSetting setting) -> void {
account->setDownloadLimitSetting(setting);
account->setUploadLimitSetting(setting);
};
const auto verifyLimitSettings = [account](const LimitSetting expectedSetting) -> void {
QCOMPARE_EQ(expectedSetting, account->downloadLimitSetting());
QCOMPARE_EQ(expectedSetting, account->uploadLimitSetting());
};
// the default setting should be NoLimit
verifyLimitSettings(LimitSetting::NoLimit);
// changing it to ManualLimit should succeed
setLimitSettings(LimitSetting::ManualLimit);
verifyLimitSettings(LimitSetting::ManualLimit);
// changing it to AutoLimit should succeed
setLimitSettings(LimitSetting::AutoLimit);
verifyLimitSettings(LimitSetting::AutoLimit);
// changing it to LegacyGlobalLimit (-2) should fall back to NoLimit
setLimitSettings(LimitSetting::LegacyGlobalLimit);
verifyLimitSettings(LimitSetting::NoLimit);
}
};
QTEST_APPLESS_MAIN(TestAccount)