fix(frpc): fix goroutine closure in runMultipleClientsFromFiles

This commit is contained in:
2026-01-14 00:11:41 +08:00
parent 803e548f42
commit dd37b2e199

View File

@@ -92,7 +92,7 @@ var rootCmd = &cobra.Command{
// If multiple config files are specified, run one frpc service for each file // If multiple config files are specified, run one frpc service for each file
if len(cfgFiles) > 1 { if len(cfgFiles) > 1 {
_ = runMultipleClientsFromFiles(cfgFiles, unsafeFeatures) runMultipleClientsFromFiles(cfgFiles, unsafeFeatures)
return nil return nil
} }
@@ -127,7 +127,7 @@ func runMultipleClients(cfgDir string, unsafeFeatures *security.UnsafeFeatures)
return err return err
} }
func runMultipleClientsFromFiles(cfgFiles []string, unsafeFeatures *security.UnsafeFeatures) error { func runMultipleClientsFromFiles(cfgFiles []string, unsafeFeatures *security.UnsafeFeatures) {
var wg sync.WaitGroup var wg sync.WaitGroup
// Display banner first // Display banner first
@@ -135,20 +135,19 @@ func runMultipleClientsFromFiles(cfgFiles []string, unsafeFeatures *security.Uns
bannerDisplayed = true bannerDisplayed = true
log.Infof("检测到 %d 个配置文件,将启动多个 frpc 服务实例", len(cfgFiles)) log.Infof("检测到 %d 个配置文件,将启动多个 frpc 服务实例", len(cfgFiles))
for i, cfgFile := range cfgFiles { for _, cfgFile := range cfgFiles {
wg.Add(1) wg.Add(1)
// Add a small delay to avoid log output mixing // Add a small delay to avoid log output mixing
time.Sleep(100 * time.Millisecond) time.Sleep(100 * time.Millisecond)
go func(index int, path string) { go func(path string) {
defer wg.Done() defer wg.Done()
err := runClient(path, unsafeFeatures) err := runClient(path, unsafeFeatures)
if err != nil { if err != nil {
fmt.Printf("\n配置文件 [%s] 启动失败: %v\n", path, err) fmt.Printf("\n配置文件 [%s] 启动失败: %v\n", path, err)
} }
}(i, cfgFile) }(cfgFile)
} }
wg.Wait() wg.Wait()
return nil
} }
func Execute() { func Execute() {