From e48200f53ae53f11ba702829cf76fa1250ee7d09 Mon Sep 17 00:00:00 2001 From: Roy Lee Date: Wed, 25 May 2022 21:29:29 -0700 Subject: [PATCH] [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. --- netsync/manager.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netsync/manager.go b/netsync/manager.go index 72fce625..351fb7cd 100644 --- a/netsync/manager.go +++ b/netsync/manager.go @@ -903,7 +903,7 @@ func (sm *SyncManager) fetchHeaderBlocks() { numRequested++ } sm.startHeader = e.Next() - if numRequested >= wire.MaxInvPerMsg { + if numRequested >= wire.MaxInvPerMsg/99 { break } }