Skip to content

Commit 2366180

Browse files
committed
Do not add to vNodes until fOneShot/fFeeler/fAddNode have been set
1 parent 3c37dc4 commit 2366180

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/net.cpp

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -342,8 +342,8 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo
342342
CNode* pnode = FindNode((CService)addrConnect);
343343
if (pnode)
344344
{
345-
pnode->AddRef();
346-
return pnode;
345+
LogPrintf("Failed to open new connection, already connected\n");
346+
return NULL;
347347
}
348348
}
349349

@@ -373,12 +373,12 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo
373373
CNode* pnode = FindNode((CService)addrConnect);
374374
if (pnode)
375375
{
376-
pnode->AddRef();
377376
if (pnode->addrName.empty()) {
378377
pnode->addrName = std::string(pszDest);
379378
}
380379
CloseSocket(hSocket);
381-
return pnode;
380+
LogPrintf("Failed to open new connection, already connected\n");
381+
return NULL;
382382
}
383383
}
384384

@@ -391,11 +391,6 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo
391391
pnode->nServicesExpected = ServiceFlags(addrConnect.nServices & nRelevantServices);
392392
pnode->nTimeConnected = GetTime();
393393
pnode->AddRef();
394-
GetNodeSignals().InitializeNode(pnode, *this);
395-
{
396-
LOCK(cs_vNodes);
397-
vNodes.push_back(pnode);
398-
}
399394

400395
return pnode;
401396
} else if (!proxyConnectionFailed) {
@@ -1838,6 +1833,12 @@ bool CConnman::OpenNetworkConnection(const CAddress& addrConnect, bool fCountFai
18381833
if (fAddnode)
18391834
pnode->fAddnode = true;
18401835

1836+
{
1837+
LOCK(cs_vNodes);
1838+
vNodes.push_back(pnode);
1839+
}
1840+
GetNodeSignals().InitializeNode(pnode, *this);
1841+
18411842
return true;
18421843
}
18431844

0 commit comments

Comments
 (0)