Skip to content

Commit f6f64cc

Browse files
buddh0NathanBSCfjl
authored
cmd/utils: fix bootnodes config priority (#28095)
This fixes an issue where the --bootnodes flag was overridden by the config file. --------- Co-authored-by: NathanBSC <[email protected]> Co-authored-by: Felix Lange <[email protected]>
1 parent 3d297fc commit f6f64cc

File tree

1 file changed

+26
-16
lines changed

1 file changed

+26
-16
lines changed

cmd/utils/flags.go

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,35 +1032,45 @@ func setNodeUserIdent(ctx *cli.Context, cfg *node.Config) {
10321032

10331033
// setBootstrapNodes creates a list of bootstrap nodes from the command line
10341034
// flags, reverting to pre-configured ones if none have been specified.
1035+
// Priority order for bootnodes configuration:
1036+
//
1037+
// 1. --bootnodes flag
1038+
// 2. Config file
1039+
// 3. Network preset flags (e.g. --goerli)
1040+
// 4. default to mainnet nodes
10351041
func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) {
10361042
urls := params.MainnetBootnodes
1037-
switch {
1038-
case ctx.IsSet(BootnodesFlag.Name):
1043+
if ctx.IsSet(BootnodesFlag.Name) {
10391044
urls = SplitAndTrim(ctx.String(BootnodesFlag.Name))
1040-
case ctx.Bool(HoleskyFlag.Name):
1041-
urls = params.HoleskyBootnodes
1042-
case ctx.Bool(SepoliaFlag.Name):
1043-
urls = params.SepoliaBootnodes
1044-
case ctx.Bool(GoerliFlag.Name):
1045-
urls = params.GoerliBootnodes
1046-
}
1047-
1048-
// don't apply defaults if BootstrapNodes is already set
1049-
if cfg.BootstrapNodes != nil {
1050-
return
1045+
} else {
1046+
if cfg.BootstrapNodes != nil {
1047+
return // Already set by config file, don't apply defaults.
1048+
}
1049+
switch {
1050+
case ctx.Bool(HoleskyFlag.Name):
1051+
urls = params.HoleskyBootnodes
1052+
case ctx.Bool(SepoliaFlag.Name):
1053+
urls = params.SepoliaBootnodes
1054+
case ctx.Bool(GoerliFlag.Name):
1055+
urls = params.GoerliBootnodes
1056+
}
10511057
}
1058+
cfg.BootstrapNodes = mustParseBootnodes(urls)
1059+
}
10521060

1053-
cfg.BootstrapNodes = make([]*enode.Node, 0, len(urls))
1061+
func mustParseBootnodes(urls []string) []*enode.Node {
1062+
nodes := make([]*enode.Node, 0, len(urls))
10541063
for _, url := range urls {
10551064
if url != "" {
10561065
node, err := enode.Parse(enode.ValidSchemes, url)
10571066
if err != nil {
10581067
log.Crit("Bootstrap URL invalid", "enode", url, "err", err)
1059-
continue
1068+
return nil
10601069
}
1061-
cfg.BootstrapNodes = append(cfg.BootstrapNodes, node)
1070+
nodes = append(nodes, node)
10621071
}
10631072
}
1073+
return nodes
10641074
}
10651075

10661076
// setBootstrapNodesV5 creates a list of bootstrap nodes from the command line

0 commit comments

Comments
 (0)