Skip to content

Commit e0e52c6

Browse files
committed
fix: sync local HTTP speed when online limit is applied
Bug: https://pms.uniontech.com/bug-view-359485.html
1 parent 4c98733 commit e0e52c6

2 files changed

Lines changed: 34 additions & 5 deletions

File tree

src/lastore-daemon/manager_update.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -497,8 +497,8 @@ func (m *Manager) refreshThrottlingFromPlatform() error {
497497
}
498498

499499
if downloadSpeed.IsOnlineSpeedLimit {
500-
// 如果启用了在线限速,禁用本地限速
501-
if err := m.disableLocalSpeedLimitConfig(); err != nil {
500+
// 如果启用了在线限速,禁用本地限速,并将本地限速速度同步为平台下发的限速值
501+
if err := m.disableLocalSpeedLimitConfig(downloadSpeed.LimitSpeed); err != nil {
502502
logger.Warningf("Failed to disable local speed limit %v", err)
503503
}
504504
} else {
@@ -534,7 +534,7 @@ func (m *Manager) disableOnlineSpeedLimitConfig() error {
534534
return nil
535535
}
536536

537-
func (m *Manager) disableLocalSpeedLimitConfig() error {
537+
func (m *Manager) disableLocalSpeedLimitConfig(limitSpeed string) error {
538538
var downloadSpeed downloadSpeedLimitConfig
539539
if err := json.Unmarshal([]byte(m.config.LocalDownloadSpeedLimitConfig), &downloadSpeed); err != nil {
540540
downloadSpeed = downloadSpeedLimitConfig{
@@ -543,10 +543,15 @@ func (m *Manager) disableLocalSpeedLimitConfig() error {
543543
IsOnlineSpeedLimit: false,
544544
}
545545
}
546-
if !downloadSpeed.DownloadSpeedLimitEnabled {
547-
return nil
546+
oldDownloadSpeed := downloadSpeed
547+
if limitSpeed != "" {
548+
downloadSpeed.LimitSpeed = limitSpeed
548549
}
549550
downloadSpeed.DownloadSpeedLimitEnabled = false
551+
downloadSpeed.IsOnlineSpeedLimit = false
552+
if downloadSpeed == oldDownloadSpeed {
553+
return nil
554+
}
550555
jsonStr, err := json.Marshal(downloadSpeed)
551556
if err != nil {
552557
return fmt.Errorf("failed to marshal local download speed limit config: %w", err)

src/lastore-daemon/updater_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package main
66

77
import (
8+
"encoding/json"
89
"os"
910
"path/filepath"
1011
"testing"
@@ -146,3 +147,26 @@ func TestGetStartupDownloadSpeedLimitConfig(t *testing.T) {
146147
})
147148
}
148149
}
150+
151+
func TestDisableLocalSpeedLimitConfigSyncsPlatformSpeedOnly(t *testing.T) {
152+
manager := &Manager{
153+
config: &config.Config{
154+
LocalDownloadSpeedLimitConfig: `{"DownloadSpeedLimitEnabled":true,"LimitSpeed":"888","IsOnlineSpeedLimit":false}`,
155+
},
156+
}
157+
158+
_ = manager.disableLocalSpeedLimitConfig("666")
159+
160+
var got downloadSpeedLimitConfig
161+
if err := json.Unmarshal([]byte(manager.config.LocalDownloadSpeedLimitConfig), &got); err != nil {
162+
t.Fatalf("LocalDownloadSpeedLimitConfig unmarshal error = %v", err)
163+
}
164+
want := downloadSpeedLimitConfig{
165+
DownloadSpeedLimitEnabled: false,
166+
LimitSpeed: "666",
167+
IsOnlineSpeedLimit: false,
168+
}
169+
if got != want {
170+
t.Fatalf("LocalDownloadSpeedLimitConfig = %+v, want %+v", got, want)
171+
}
172+
}

0 commit comments

Comments
 (0)