@ -2362,8 +2362,6 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
m_connman . PushMessage ( & pfrom , msg_maker . Make ( NetMsgType : : WTXIDRELAY ) ) ;
}
m_connman . PushMessage ( & pfrom , msg_maker . Make ( NetMsgType : : VERACK ) ) ;
// Signal ADDRv2 support (BIP155).
if ( greatest_common_version > = 70016 ) {
// BIP155 defines addrv2 and sendaddrv2 for all protocol versions, but some
@ -2373,6 +2371,8 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
m_connman . PushMessage ( & pfrom , msg_maker . Make ( NetMsgType : : SENDADDRV2 ) ) ;
}
m_connman . PushMessage ( & pfrom , msg_maker . Make ( NetMsgType : : VERACK ) ) ;
pfrom . nServices = nServices ;
pfrom . SetAddrLocal ( addrMe ) ;
{
@ -2541,6 +2541,17 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
return ;
}
if ( msg_type = = NetMsgType : : SENDADDRV2 ) {
if ( pfrom . fSuccessfullyConnected ) {
// Disconnect peers that send SENDADDRV2 message after VERACK; this
// must be negotiated between VERSION and VERACK.
pfrom . fDisconnect = true ;
return ;
}
pfrom . m_wants_addrv2 = true ;
return ;
}
if ( ! pfrom . fSuccessfullyConnected ) {
LogPrint ( BCLog : : NET , " Unsupported message \" %s \" prior to verack from peer=%d \n " , SanitizeString ( msg_type ) , pfrom . GetId ( ) ) ;
return ;
@ -2608,11 +2619,6 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
return ;
}
if ( msg_type = = NetMsgType : : SENDADDRV2 ) {
pfrom . m_wants_addrv2 = true ;
return ;
}
if ( msg_type = = NetMsgType : : SENDHEADERS ) {
LOCK ( cs_main ) ;
State ( pfrom . GetId ( ) ) - > fPreferHeaders = true ;