Dont deserialize nVersion into CNode, should fix #9212
This commit is contained in:
parent
1c2edd9f67
commit
80ff0344ae
1 changed files with 8 additions and 6 deletions
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue