@@ -1032,35 +1032,45 @@ func setNodeUserIdent(ctx *cli.Context, cfg *node.Config) {
1032
1032
1033
1033
// setBootstrapNodes creates a list of bootstrap nodes from the command line
1034
1034
// 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
1035
1041
func setBootstrapNodes (ctx * cli.Context , cfg * p2p.Config ) {
1036
1042
urls := params .MainnetBootnodes
1037
- switch {
1038
- case ctx .IsSet (BootnodesFlag .Name ):
1043
+ if ctx .IsSet (BootnodesFlag .Name ) {
1039
1044
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
+ }
1051
1057
}
1058
+ cfg .BootstrapNodes = mustParseBootnodes (urls )
1059
+ }
1052
1060
1053
- cfg .BootstrapNodes = make ([]* enode.Node , 0 , len (urls ))
1061
+ func mustParseBootnodes (urls []string ) []* enode.Node {
1062
+ nodes := make ([]* enode.Node , 0 , len (urls ))
1054
1063
for _ , url := range urls {
1055
1064
if url != "" {
1056
1065
node , err := enode .Parse (enode .ValidSchemes , url )
1057
1066
if err != nil {
1058
1067
log .Crit ("Bootstrap URL invalid" , "enode" , url , "err" , err )
1059
- continue
1068
+ return nil
1060
1069
}
1061
- cfg . BootstrapNodes = append (cfg . BootstrapNodes , node )
1070
+ nodes = append (nodes , node )
1062
1071
}
1063
1072
}
1073
+ return nodes
1064
1074
}
1065
1075
1066
1076
// setBootstrapNodesV5 creates a list of bootstrap nodes from the command line
0 commit comments