From dce4c36f7b2ed6ba51d5f92acfd15c00e6a75131 Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Sat, 3 May 2025 00:59:15 +0200 Subject: [PATCH 1/5] allow setting maxPeers in handler Signed-off-by: Csaba Kiraly --- eth/handler.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/eth/handler.go b/eth/handler.go index 8283d7d02fe2..5d27422316a7 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -425,6 +425,10 @@ func (h *handler) unregisterPeer(id string) { } } +func (h *handler) SetMaxPeers(maxPeers int) { + h.maxPeers = maxPeers +} + func (h *handler) Start(maxPeers int) { h.maxPeers = maxPeers From 4644443b10661d774c3b16ce6fd2e2e996486b9e Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Sat, 3 May 2025 01:02:56 +0200 Subject: [PATCH 2/5] eth/dropper: allow setting maxpeers Signed-off-by: Csaba Kiraly --- eth/dropper.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/eth/dropper.go b/eth/dropper.go index 51f2a7a95a3f..c489f62ae49a 100644 --- a/eth/dropper.go +++ b/eth/dropper.go @@ -88,6 +88,11 @@ func newDropper(maxDialPeers, maxInboundPeers int) *dropper { return cm } +func (cm *dropper) SetMaxPeers(maxDialPeers, maxInboundPeers int) { + cm.maxDialPeers = maxDialPeers + cm.maxInboundPeers = maxInboundPeers +} + // Start the dropper. func (cm *dropper) Start(srv *p2p.Server, syncingFunc getSyncingFunc) { cm.peersFunc = srv.Peers From 2619478ae9a27e44c4dab58ea113b2225d63120a Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Sat, 3 May 2025 01:03:27 +0200 Subject: [PATCH 3/5] eth: allow setting maxpeers dynamically --- eth/backend.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/eth/backend.go b/eth/backend.go index 6d1b6bae991c..eed6cac24842 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -410,6 +410,12 @@ func (s *Ethereum) Start() error { return nil } +func (s *Ethereum) setMaxPeers(max int) { + s.p2pServer.MaxPeers = max + s.handler.SetMaxPeers(max) + s.dropper.SetMaxPeers(s.p2pServer.MaxDialedConns(), s.p2pServer.MaxInboundConns()) +} + func (s *Ethereum) newChainView(head *types.Header) *filtermaps.ChainView { if head == nil { return nil From 5046ea5626dc4a66a1ab5073c99009fbded57647 Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Sat, 3 May 2025 10:38:42 +0200 Subject: [PATCH 4/5] p2p/server: allow setting MaxPeers dynamically Signed-off-by: Csaba Kiraly --- p2p/dial.go | 4 ++++ p2p/server.go | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/p2p/dial.go b/p2p/dial.go index 225709427c21..3b2c84d44577 100644 --- a/p2p/dial.go +++ b/p2p/dial.go @@ -185,6 +185,10 @@ func newDialScheduler(config dialConfig, it enode.Iterator, setupFunc dialSetupF return d } +func (d *dialScheduler) setMaxDialPeers(maxDialPeers int) { + d.maxDialPeers = maxDialPeers +} + // stop shuts down the dialer, canceling all current dial tasks. func (d *dialScheduler) stop() { d.cancel() diff --git a/p2p/server.go b/p2p/server.go index d9105976dd27..6b22c1e45eb2 100644 --- a/p2p/server.go +++ b/p2p/server.go @@ -420,6 +420,13 @@ func (srv *Server) Start() (err error) { return nil } +func (srv *Server) SetMaxPeers(max int) { + srv.lock.Lock() + defer srv.lock.Unlock() + srv.MaxPeers = max + srv.dialsched.setMaxDialPeers(srv.MaxDialedConns()) +} + func (srv *Server) setupLocalNode() error { // Create the devp2p handshake. pubkey := crypto.FromECDSAPub(&srv.PrivateKey.PublicKey) From e66f3c4c26bc944e43c30c3600f1253dfe798363 Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Sat, 3 May 2025 10:39:13 +0200 Subject: [PATCH 5/5] eth: fixup setMaxPeers Signed-off-by: Csaba Kiraly --- eth/backend.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eth/backend.go b/eth/backend.go index eed6cac24842..7198e6657779 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -411,7 +411,7 @@ func (s *Ethereum) Start() error { } func (s *Ethereum) setMaxPeers(max int) { - s.p2pServer.MaxPeers = max + s.p2pServer.SetMaxPeers(max) s.handler.SetMaxPeers(max) s.dropper.SetMaxPeers(s.p2pServer.MaxDialedConns(), s.p2pServer.MaxInboundConns()) }