|
|
|
@ -2745,12 +2745,11 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Feature negotiation of wtxidrelay must happen between VERSION and VERACK
|
|
|
|
|
// to avoid relay problems from switching after a connection is up.
|
|
|
|
|
// BIP339 defines feature negotiation of wtxidrelay, which must happen between
|
|
|
|
|
// VERSION and VERACK to avoid relay problems from switching after a connection is up.
|
|
|
|
|
if (msg_type == NetMsgType::WTXIDRELAY) {
|
|
|
|
|
if (pfrom.fSuccessfullyConnected) {
|
|
|
|
|
// Disconnect peers that send wtxidrelay message after VERACK; this
|
|
|
|
|
// must be negotiated between VERSION and VERACK.
|
|
|
|
|
// Disconnect peers that send a wtxidrelay message after VERACK.
|
|
|
|
|
LogPrint(BCLog::NET, "wtxidrelay received after verack from peer=%d; disconnecting\n", pfrom.GetId());
|
|
|
|
|
pfrom.fDisconnect = true;
|
|
|
|
|
return;
|
|
|
|
@ -2769,10 +2768,11 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// BIP155 defines feature negotiation of addrv2 and sendaddrv2, which must happen
|
|
|
|
|
// between VERSION and VERACK.
|
|
|
|
|
if (msg_type == NetMsgType::SENDADDRV2) {
|
|
|
|
|
if (pfrom.fSuccessfullyConnected) {
|
|
|
|
|
// Disconnect peers that send SENDADDRV2 message after VERACK; this
|
|
|
|
|
// must be negotiated between VERSION and VERACK.
|
|
|
|
|
// Disconnect peers that send a SENDADDRV2 message after VERACK.
|
|
|
|
|
LogPrint(BCLog::NET, "sendaddrv2 received after verack from peer=%d; disconnecting\n", pfrom.GetId());
|
|
|
|
|
pfrom.fDisconnect = true;
|
|
|
|
|
return;
|
|
|
|
|