Move [clean|str]SubVer writes/copyStats into a lock
This commit is contained in:
parent
0f31872615
commit
22b4966a29
3 changed files with 13 additions and 4 deletions
|
@ -610,7 +610,10 @@ void CNode::copyStats(CNodeStats &stats)
|
|||
X(nTimeOffset);
|
||||
X(addrName);
|
||||
X(nVersion);
|
||||
X(cleanSubVer);
|
||||
{
|
||||
LOCK(cs_SubVer);
|
||||
X(cleanSubVer);
|
||||
}
|
||||
X(fInbound);
|
||||
X(fAddnode);
|
||||
X(nStartingHeight);
|
||||
|
|
|
@ -598,6 +598,7 @@ public:
|
|||
// store the sanitized version in cleanSubVer. The original should be used when dealing with
|
||||
// the network or wire types and the cleaned string used when displayed or logged.
|
||||
std::string strSubVer, cleanSubVer;
|
||||
CCriticalSection cs_SubVer; // used for both cleanSubVer and strSubVer
|
||||
bool fWhitelisted; // This peer can bypass DoS banning.
|
||||
bool fFeeler; // If true this node is being used as a short lived feeler.
|
||||
bool fOneShot;
|
||||
|
|
|
@ -1211,6 +1211,7 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr
|
|||
int nVersion;
|
||||
int nSendVersion;
|
||||
std::string strSubVer;
|
||||
std::string cleanSubVer;
|
||||
int nStartingHeight = -1;
|
||||
bool fRelay = true;
|
||||
|
||||
|
@ -1246,6 +1247,7 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr
|
|||
vRecv >> addrFrom >> nNonce;
|
||||
if (!vRecv.empty()) {
|
||||
vRecv >> LIMITED_STRING(strSubVer, MAX_SUBVERSION_LENGTH);
|
||||
cleanSubVer = SanitizeString(strSubVer);
|
||||
}
|
||||
if (!vRecv.empty()) {
|
||||
vRecv >> nStartingHeight;
|
||||
|
@ -1273,8 +1275,11 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr
|
|||
|
||||
pfrom->nServices = nServices;
|
||||
pfrom->addrLocal = addrMe;
|
||||
pfrom->strSubVer = strSubVer;
|
||||
pfrom->cleanSubVer = SanitizeString(strSubVer);
|
||||
{
|
||||
LOCK(pfrom->cs_SubVer);
|
||||
pfrom->strSubVer = strSubVer;
|
||||
pfrom->cleanSubVer = cleanSubVer;
|
||||
}
|
||||
pfrom->nStartingHeight = nStartingHeight;
|
||||
pfrom->fClient = !(nServices & NODE_NETWORK);
|
||||
{
|
||||
|
@ -1330,7 +1335,7 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr
|
|||
remoteAddr = ", peeraddr=" + pfrom->addr.ToString();
|
||||
|
||||
LogPrintf("receive version message: %s: version %d, blocks=%d, us=%s, peer=%d%s\n",
|
||||
pfrom->cleanSubVer, pfrom->nVersion,
|
||||
cleanSubVer, pfrom->nVersion,
|
||||
pfrom->nStartingHeight, addrMe.ToString(), pfrom->id,
|
||||
remoteAddr);
|
||||
|
||||
|
|
Loading…
Reference in a new issue