forked from Mxmilu666/frp
fix(frpc): fix goroutine closure in runMultipleClientsFromFiles
This commit is contained in:
@@ -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() {
|
||||||
|
|||||||
Reference in New Issue
Block a user