|
|
@ -1199,7 +1199,8 @@ bool static ProcessMessage(CNode* pfrom, std::string strCommand, CDataStream& vR |
|
|
|
CAddress addrFrom; |
|
|
|
CAddress addrFrom; |
|
|
|
uint64_t nNonce = 1; |
|
|
|
uint64_t nNonce = 1; |
|
|
|
uint64_t nServiceInt; |
|
|
|
uint64_t nServiceInt; |
|
|
|
vRecv >> pfrom->nVersion >> nServiceInt >> nTime >> addrMe; |
|
|
|
int nVersion; |
|
|
|
|
|
|
|
vRecv >> nVersion >> nServiceInt >> nTime >> addrMe; |
|
|
|
pfrom->nServices = ServiceFlags(nServiceInt); |
|
|
|
pfrom->nServices = ServiceFlags(nServiceInt); |
|
|
|
if (!pfrom->fInbound) |
|
|
|
if (!pfrom->fInbound) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1214,18 +1215,18 @@ bool static ProcessMessage(CNode* pfrom, std::string strCommand, CDataStream& vR |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (pfrom->nVersion < MIN_PEER_PROTO_VERSION) |
|
|
|
if (nVersion < MIN_PEER_PROTO_VERSION) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// disconnect from peers older than this proto version
|
|
|
|
// disconnect from peers older than this proto version
|
|
|
|
LogPrintf("peer=%d using obsolete version %i; disconnecting\n", pfrom->id, pfrom->nVersion); |
|
|
|
LogPrintf("peer=%d using obsolete version %i; disconnecting\n", pfrom->id, nVersion); |
|
|
|
connman.PushMessage(pfrom, CNetMsgMaker(INIT_PROTO_VERSION).Make(NetMsgType::REJECT, strCommand, REJECT_OBSOLETE, |
|
|
|
connman.PushMessage(pfrom, CNetMsgMaker(INIT_PROTO_VERSION).Make(NetMsgType::REJECT, strCommand, REJECT_OBSOLETE, |
|
|
|
strprintf("Version must be %d or greater", MIN_PEER_PROTO_VERSION))); |
|
|
|
strprintf("Version must be %d or greater", MIN_PEER_PROTO_VERSION))); |
|
|
|
pfrom->fDisconnect = true; |
|
|
|
pfrom->fDisconnect = true; |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (pfrom->nVersion == 10300) |
|
|
|
if (nVersion == 10300) |
|
|
|
pfrom->nVersion = 300; |
|
|
|
nVersion = 300; |
|
|
|
if (!vRecv.empty()) |
|
|
|
if (!vRecv.empty()) |
|
|
|
vRecv >> addrFrom >> nNonce; |
|
|
|
vRecv >> addrFrom >> nNonce; |
|
|
|
if (!vRecv.empty()) { |
|
|
|
if (!vRecv.empty()) { |
|
|
@ -1277,7 +1278,8 @@ bool static ProcessMessage(CNode* pfrom, std::string strCommand, CDataStream& vR |
|
|
|
|
|
|
|
|
|
|
|
// Change version
|
|
|
|
// Change version
|
|
|
|
connman.PushMessage(pfrom, CNetMsgMaker(INIT_PROTO_VERSION).Make(NetMsgType::VERACK)); |
|
|
|
connman.PushMessage(pfrom, CNetMsgMaker(INIT_PROTO_VERSION).Make(NetMsgType::VERACK)); |
|
|
|
int nSendVersion = std::min(pfrom->nVersion, PROTOCOL_VERSION); |
|
|
|
int nSendVersion = std::min(nVersion, PROTOCOL_VERSION); |
|
|
|
|
|
|
|
pfrom->nVersion = nVersion; |
|
|
|
pfrom->SetSendVersion(nSendVersion); |
|
|
|
pfrom->SetSendVersion(nSendVersion); |
|
|
|
|
|
|
|
|
|
|
|
if (!pfrom->fInbound) |
|
|
|
if (!pfrom->fInbound) |
|
|
|