Merge #16188: net: Document what happens to getdata of unknown type
dddd9270f8
net: Document what happens to getdata of unknonw type (MarcoFalke)
Pull request description:
Any getdata of unknown type will never be processed and blocks all future messages from a peer. This isn't obviously clear from reading the code, so document it.
Top commit has no ACKs.
Tree-SHA512: 4f8e43bbe6534242facfcfffae28b7a6aa2d228841fa2146a87d494e69f614b0da23cf7a5f3d4367358a7c1981fe2ec196a21c437ae1653f1c7e0351be22598a
This commit is contained in:
commit
21bd6eb782
1 changed files with 6 additions and 0 deletions
|
@ -1555,6 +1555,11 @@ void static ProcessGetData(CNode* pfrom, const CChainParams& chainparams, CConnm
|
|||
}
|
||||
}
|
||||
|
||||
// Unknown types in the GetData stay in vRecvGetData and block any future
|
||||
// message from this peer, see vRecvGetData check in ProcessMessages().
|
||||
// Depending on future p2p changes, we might either drop unknown getdata on
|
||||
// the floor or disconnect the peer.
|
||||
|
||||
pfrom->vRecvGetData.erase(pfrom->vRecvGetData.begin(), it);
|
||||
|
||||
if (!vNotFound.empty()) {
|
||||
|
@ -3260,6 +3265,7 @@ bool PeerLogicValidation::ProcessMessages(CNode* pfrom, std::atomic<bool>& inter
|
|||
return false;
|
||||
|
||||
// this maintains the order of responses
|
||||
// and prevents vRecvGetData to grow unbounded
|
||||
if (!pfrom->vRecvGetData.empty()) return true;
|
||||
if (!pfrom->orphan_work_set.empty()) return true;
|
||||
|
||||
|
|
Loading…
Reference in a new issue