From 1ad63827e143d8128a866bf1ca0dad4d2a0c9163 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Sat, 1 Mar 2025 00:02:42 +0700 Subject: [PATCH] cmd/cli: do not validate invalid syntax config If the remote custom config is an invalid syntax config, we should not do rules validation, prevent unnecessary error messages printed. --- cmd/cli/cli.go | 10 +++++----- cmd/cli/prog.go | 10 +++++++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/cmd/cli/cli.go b/cmd/cli/cli.go index 9757f92..1d26b88 100644 --- a/cmd/cli/cli.go +++ b/cmd/cli/cli.go @@ -1843,7 +1843,11 @@ func doValidateCdRemoteConfig(cdUID string, fatal bool) error { oldV := v var cfgErr error remoteCfg := &ctrld.Config{} - if cfgErr = validateCdRemoteConfig(rc, remoteCfg); cfgErr != nil { + if cfgErr = validateCdRemoteConfig(rc, remoteCfg); cfgErr == nil { + setListenerDefaultValue(remoteCfg) + setNetworkDefaultValue(remoteCfg) + cfgErr = validateConfig(remoteCfg) + } else { if errors.As(cfgErr, &viper.ConfigParseError{}) { if configStr, _ := base64.StdEncoding.DecodeString(rc.Ctrld.CustomConfig); len(configStr) > 0 { tmpDir := os.TempDir() @@ -1866,11 +1870,7 @@ func doValidateCdRemoteConfig(cdUID string, fatal bool) error { } else { mainLog.Load().Error().Msgf("failed to unmarshal custom config: %v", err) } - } else { - setListenerDefaultValue(remoteCfg) - setNetworkDefaultValue(remoteCfg) } - cfgErr = validateConfig(remoteCfg) if cfgErr != nil { mainLog.Load().Warn().Msg("disregarding invalid custom config") } diff --git a/cmd/cli/prog.go b/cmd/cli/prog.go index 05be35c..be9b0ae 100644 --- a/cmd/cli/prog.go +++ b/cmd/cli/prog.go @@ -351,15 +351,19 @@ func (p *prog) apiConfigReload() { if resolverConfig.Ctrld.CustomLastUpdate > lastUpdated || forced { lastUpdated = time.Now().Unix() cfg := &ctrld.Config{} - if err := validateCdRemoteConfig(resolverConfig, cfg); err != nil { + var cfgErr error + if cfgErr = validateCdRemoteConfig(resolverConfig, cfg); cfgErr == nil { + setListenerDefaultValue(cfg) + setNetworkDefaultValue(cfg) + cfgErr = validateConfig(cfg) + } + if cfgErr != nil { logger.Warn().Err(err).Msg("skipping invalid custom config") if _, err := controld.UpdateCustomLastFailed(cdUID, rootCmd.Version, cdDev, true); err != nil { logger.Error().Err(err).Msg("could not mark custom last update failed") } return } - setListenerDefaultValue(cfg) - setNetworkDefaultValue(cfg) logger.Debug().Msg("custom config changes detected, reloading...") p.apiReloadCh <- cfg } else {