Skip to content

Commit fed3094

Browse files
committed
Acquire cs_vNodes before changing refrence counts
1 parent 69ee1aa commit fed3094

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/net.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -777,15 +777,24 @@ static list<CNode*> vNodesDisconnected;
777777

778778
class CNodeRef {
779779
public:
780-
CNodeRef(CNode *pnode) : _pnode(pnode) {_pnode->AddRef();}
781-
~CNodeRef() {_pnode->Release();}
780+
CNodeRef(CNode *pnode) : _pnode(pnode) {
781+
LOCK(cs_vNodes);
782+
_pnode->AddRef();
783+
}
784+
785+
~CNodeRef() {
786+
LOCK(cs_vNodes);
787+
_pnode->Release();
788+
}
782789

783790
CNode& operator *() const {return *_pnode;};
784791
CNode* operator ->() const {return _pnode;};
785792

786793
CNodeRef& operator =(const CNodeRef& other)
787794
{
788795
if (this != &other) {
796+
LOCK(cs_vNodes);
797+
789798
_pnode->Release();
790799
_pnode = other._pnode;
791800
_pnode->AddRef();
@@ -796,6 +805,7 @@ class CNodeRef {
796805
CNodeRef(const CNodeRef& other):
797806
_pnode(other._pnode)
798807
{
808+
LOCK(cs_vNodes);
799809
_pnode->AddRef();
800810
}
801811
private:

0 commit comments

Comments
 (0)