From 7ab999a80fe8d2fc7fec7fe687be445561414ea4 Mon Sep 17 00:00:00 2001 From: hkfires <10558748+hkfires@users.noreply.github.com> Date: Sun, 30 Aug 2026 08:59:04 +0800 Subject: [PATCH] fix(config): add NormalizeHomePort function and update home port handling --- cmd/server/main.go | 2 +- cmd/server/main_test.go | 45 ++++++++++++++++++++++++++++++++++++ internal/config/home.go | 9 ++++++++ internal/config/home_test.go | 23 ++++++++++++++++++ 4 files changed, 78 insertions(+), 1 deletion(-) diff --git a/cmd/server/main.go b/cmd/server/main.go index 0d8cdecec..e2d4474d7 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -307,7 +307,7 @@ func main() { parsed = &config.Config{} } parsed.Home = homeCfg - parsed.Port = 8317 // Default to 8317 for home mode, can be overridden by home config + parsed.Port = config.NormalizeHomePort(parsed.Port) parsed.UsageStatisticsEnabled = true pluginSyncCfg := *parsed parsed.Plugins.StoreAuth = nil diff --git a/cmd/server/main_test.go b/cmd/server/main_test.go index fce4be93b..bce06d82f 100644 --- a/cmd/server/main_test.go +++ b/cmd/server/main_test.go @@ -135,3 +135,48 @@ func TestModelCatalogUpdaterPlan(t *testing.T) { }) } } + +func TestHomeConfigPayloadPortApplication(t *testing.T) { + tests := []struct { + name string + yamlBody string + wantPort int + }{ + { + name: "custom port honored", + yamlBody: "port: 9090\n", + wantPort: 9090, + }, + { + name: "custom port 8327 honored", + yamlBody: "port: 8327\n", + wantPort: 8327, + }, + { + name: "missing port defaults to 8317", + yamlBody: "debug: true\n", + wantPort: 8317, + }, + { + name: "standard port 8317 preserved", + yamlBody: "port: 8317\n", + wantPort: 8317, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + parsed, errParse := config.ParseConfigBytes([]byte(tt.yamlBody)) + if errParse != nil { + t.Fatalf("ParseConfigBytes() error = %v", errParse) + } + if parsed == nil { + parsed = &config.Config{} + } + parsed.Port = config.NormalizeHomePort(parsed.Port) + if parsed.Port != tt.wantPort { + t.Fatalf("parsed.Port = %d, want %d", parsed.Port, tt.wantPort) + } + }) + } +} diff --git a/internal/config/home.go b/internal/config/home.go index 9dd0d4aaf..1d8a7ee27 100644 --- a/internal/config/home.go +++ b/internal/config/home.go @@ -20,3 +20,12 @@ type HomeTLSConfig struct { ClientKey string `yaml:"-" json:"-"` UseTargetServerName bool `yaml:"-" json:"-"` } + +// NormalizeHomePort ensures that the CPA server port received from Home is valid, +// defaulting to 8317 when omitted or non-positive. +func NormalizeHomePort(port int) int { + if port <= 0 { + return 8317 + } + return port +} diff --git a/internal/config/home_test.go b/internal/config/home_test.go index 850f3b72e..a9674935d 100644 --- a/internal/config/home_test.go +++ b/internal/config/home_test.go @@ -44,3 +44,26 @@ home: t.Fatal("Home.TLS.InsecureSkipVerify = true, want false") } } + +func TestNormalizeHomePort(t *testing.T) { + tests := []struct { + name string + port int + want int + }{ + {name: "zero defaults to 8317", port: 0, want: 8317}, + {name: "negative defaults to 8317", port: -1, want: 8317}, + {name: "port 8327 preserved", port: 8327, want: 8327}, + {name: "standard 8317 preserved", port: 8317, want: 8317}, + {name: "custom port 8080 preserved", port: 8080, want: 8080}, + {name: "custom port 9090 preserved", port: 9090, want: 9090}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := NormalizeHomePort(tt.port); got != tt.want { + t.Fatalf("NormalizeHomePort(%d) = %d, want %d", tt.port, got, tt.want) + } + }) + } +}