Skip to content

Commit

Permalink
Merge pull request #2266 from CortexFoundation/dev
Browse files Browse the repository at this point in the history
p2p/discover: make discv5 response timeout configurable
  • Loading branch information
ucwong authored Feb 13, 2025
2 parents ed18dfb + 005fe12 commit 4537c11
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
8 changes: 6 additions & 2 deletions p2p/discover/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,9 @@ type Config struct {
// All remaining settings are optional.

// Packet handling configuration:
NetRestrict *netutil.Netlist // list of allowed IP networks
Unhandled chan<- ReadPacket // unhandled packets are sent on this channel
NetRestrict *netutil.Netlist // list of allowed IP networks
Unhandled chan<- ReadPacket // unhandled packets are sent on this channel
V5RespTimeout time.Duration // timeout for v5 queries

// Node table configuration:
Bootnodes []*enode.Node // list of bootstrap nodes
Expand All @@ -73,6 +74,9 @@ func (cfg Config) withDefaults() Config {
if cfg.RefreshInterval == 0 {
cfg.RefreshInterval = 30 * time.Minute
}
if cfg.V5RespTimeout == 0 {
cfg.V5RespTimeout = 700 * time.Millisecond
}

// Debug/test settings:
if cfg.Log == nil {
Expand Down
6 changes: 3 additions & 3 deletions p2p/discover/v5_udp.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,6 @@ const (
lookupRequestLimit = 3 // max requests against a single node during lookup
findnodeResultLimit = 16 // applies in FINDNODE handler
totalNodesResponseLimit = 5 // applies in waitForNodes

respTimeoutV5 = 700 * time.Millisecond
)

// codecV5 is implemented by v5wire.Codec (and testCodec).
Expand Down Expand Up @@ -71,6 +69,7 @@ type UDPv5 struct {
log log.Logger
clock mclock.Clock
validSchemes enr.IdentityScheme
respTimeout time.Duration

// misc buffers used during message handling
logcontext []any
Expand Down Expand Up @@ -158,6 +157,7 @@ func newUDPv5(conn UDPConn, ln *enode.LocalNode, cfg Config) (*UDPv5, error) {
log: cfg.Log,
validSchemes: cfg.ValidSchemes,
clock: cfg.Clock,
respTimeout: cfg.V5RespTimeout,
// channels into dispatch
packetInCh: make(chan ReadPacket, 1),
readNextCh: make(chan struct{}, 1),
Expand Down Expand Up @@ -576,7 +576,7 @@ func (t *UDPv5) startResponseTimeout(c *callV5) {
timer mclock.Timer
done = make(chan struct{})
)
timer = t.clock.AfterFunc(respTimeoutV5, func() {
timer = t.clock.AfterFunc(t.respTimeout, func() {
<-done
select {
case t.respTimeoutCh <- &callTimeout{c, timer}:
Expand Down

0 comments on commit 4537c11

Please sign in to comment.