[lbry] wire: limit the blocks of getdata message

In the cuurent codebase, OnGetData() handler penalizes / ban peers
requesting large blocks.

  server.go:
  @@ -649,7 +649,7 @@ func (sp *serverPeer) OnGetData(_ *peer.Peer, msg *wire.MsgGetData) {
          // bursts of small requests are not penalized as that would potentially ban
          // peers performing IBD.
          // This incremental score decays each minute to half of its value.
          if sp.addBanScore(0, uint32(length)*99/wire.MaxInvPerMsg, "getdata") {
                  return
          }

This accidentally penalize nodes trying to catch up checkpoints whose
'getdata' requests would be as large as the wire.MaxInvPerMsg, and get
banned very soon.

This patch limit getdata request to wire.MaxInvPerMsg/99 blocks.
This commit is contained in:
Roy Lee 2022-05-25 21:29:29 -07:00
parent 4a8d390a06
commit e48200f53a

View file

@ -903,7 +903,7 @@ func (sm *SyncManager) fetchHeaderBlocks() {
numRequested++
}
sm.startHeader = e.Next()
if numRequested >= wire.MaxInvPerMsg {
if numRequested >= wire.MaxInvPerMsg/99 {
break
}
}