From 63c17e47c60caa11d90f7d5c5ac65ac0ea609e7c Mon Sep 17 00:00:00 2001 From: NathanBSC Date: Tue, 12 Sep 2023 19:13:00 +0800 Subject: [PATCH 1/3] cmd/utils: fix parsing BootstrapNodes from BootnodesFlag --- cmd/utils/flags.go | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index f5f131951af84..9a090f6fe3bfe 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1042,11 +1042,8 @@ func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) { urls = params.SepoliaBootnodes case ctx.Bool(GoerliFlag.Name): urls = params.GoerliBootnodes - } - - // don't apply defaults if BootstrapNodes is already set - if cfg.BootstrapNodes != nil { - return + case cfg.BootstrapNodesV5 != nil: + return // already set, don't apply defaults. } cfg.BootstrapNodes = make([]*enode.Node, 0, len(urls)) From 8000aa8047c0fd51a03009dfea164795f69ded1c Mon Sep 17 00:00:00 2001 From: NathanBSC Date: Wed, 13 Sep 2023 14:44:22 +0800 Subject: [PATCH 2/3] fix: BootstrapNodesV5 to BootstrapNodes, use wrong field --- cmd/utils/flags.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 9a090f6fe3bfe..d5655a1f85e77 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1042,7 +1042,7 @@ func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) { urls = params.SepoliaBootnodes case ctx.Bool(GoerliFlag.Name): urls = params.GoerliBootnodes - case cfg.BootstrapNodesV5 != nil: + case cfg.BootstrapNodes != nil: return // already set, don't apply defaults. } From b3611eda6bb28445cd5128564c0ae51d49f8ff86 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Mon, 25 Sep 2023 16:15:41 +0200 Subject: [PATCH 3/3] cmd/utils: fix setting bootnodes from config file when network preset given --- cmd/utils/flags.go | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index d5655a1f85e77..2c13be5b5ad34 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1031,32 +1031,45 @@ func setNodeUserIdent(ctx *cli.Context, cfg *node.Config) { // setBootstrapNodes creates a list of bootstrap nodes from the command line // flags, reverting to pre-configured ones if none have been specified. +// Priority order for bootnodes configuration: +// +// 1. --bootnodes flag +// 2. Config file +// 3. Network preset flags (e.g. --goerli) +// 4. default to mainnet nodes func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) { urls := params.MainnetBootnodes - switch { - case ctx.IsSet(BootnodesFlag.Name): + if ctx.IsSet(BootnodesFlag.Name) { urls = SplitAndTrim(ctx.String(BootnodesFlag.Name)) - case ctx.Bool(HoleskyFlag.Name): - urls = params.HoleskyBootnodes - case ctx.Bool(SepoliaFlag.Name): - urls = params.SepoliaBootnodes - case ctx.Bool(GoerliFlag.Name): - urls = params.GoerliBootnodes - case cfg.BootstrapNodes != nil: - return // already set, don't apply defaults. + } else { + if cfg.BootstrapNodes != nil { + return // Already set by config file, don't apply defaults. + } + switch { + case ctx.Bool(HoleskyFlag.Name): + urls = params.HoleskyBootnodes + case ctx.Bool(SepoliaFlag.Name): + urls = params.SepoliaBootnodes + case ctx.Bool(GoerliFlag.Name): + urls = params.GoerliBootnodes + } } + cfg.BootstrapNodes = mustParseBootnodes(urls) +} - cfg.BootstrapNodes = make([]*enode.Node, 0, len(urls)) +func mustParseBootnodes(urls []string) []*enode.Node { + nodes := make([]*enode.Node, 0, len(urls)) for _, url := range urls { if url != "" { node, err := enode.Parse(enode.ValidSchemes, url) if err != nil { log.Crit("Bootstrap URL invalid", "enode", url, "err", err) - continue + return nil } - cfg.BootstrapNodes = append(cfg.BootstrapNodes, node) + nodes = append(nodes, node) } } + return nodes } // setBootstrapNodesV5 creates a list of bootstrap nodes from the command line