From 5c14719f14cbef0014515251902b2d325971361b Mon Sep 17 00:00:00 2001 From: stasatdaglabs <39559713+stasatdaglabs@users.noreply.github.com> Date: Mon, 26 Aug 2019 15:12:55 +0300 Subject: [PATCH] [NOD-295] Capped amount of invs in a getData message. (#377) --- netsync/manager.go | 2 +- wire/invvect.go | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/netsync/manager.go b/netsync/manager.go index a0b3bdc4f..8749201d3 100644 --- a/netsync/manager.go +++ b/netsync/manager.go @@ -1030,7 +1030,7 @@ func (sm *SyncManager) handleInvMsg(imsg *invMsg) { func (sm *SyncManager) addInvsToGetDataMessageFromQueue(gdmsg *wire.MsgGetData, state *peerSyncState, requestQueue []*wire.InvVect) ([]*wire.InvVect, error) { var invsNum int - leftSpaceInGdmsg := wire.MaxInvPerMsg - len(gdmsg.InvList) + leftSpaceInGdmsg := wire.MaxInvPerGetDataMsg - len(gdmsg.InvList) if len(requestQueue) > leftSpaceInGdmsg { invsNum = leftSpaceInGdmsg } else { diff --git a/wire/invvect.go b/wire/invvect.go index 4d9fbe8d9..f4ab31e9a 100644 --- a/wire/invvect.go +++ b/wire/invvect.go @@ -16,6 +16,10 @@ const ( // single bitcoin inv message. MaxInvPerMsg = 1 << 16 + // MaxInvPerGetDataMsg is the maximum number of inventory vectors that can + // be in a single getData message. + MaxInvPerGetDataMsg = 50 + // Maximum payload size for an inventory vector. maxInvVectPayload = 4 + daghash.HashSize )