Do not add to vNodes until fOneShot/fFeeler/fAddNode have been set

This commit is contained in:
Matt Corallo 2017-01-24 16:51:22 -05:00 committed by Alexander Block
parent ea73614994
commit 4ee0657f85

View File

@ -355,8 +355,8 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo
CNode* pnode = FindNode((CService)addrConnect);
if (pnode)
{
pnode->AddRef();
return pnode;
LogPrintf("Failed to open new connection, already connected\n");
return NULL;
}
}
@ -386,12 +386,12 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo
CNode* pnode = FindNode((CService)addrConnect);
if (pnode)
{
pnode->AddRef();
if (pnode->addrName.empty()) {
pnode->addrName = std::string(pszDest);
}
CloseSocket(hSocket);
return pnode;
LogPrintf("Failed to open new connection, already connected\n");
return NULL;
}
}
@ -406,9 +406,6 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo
pnode->nTimeConnected = GetSystemTimeInSeconds();
pnode->AddRef();
GetNodeSignals().InitializeNode(pnode, *this);
LOCK(cs_vNodes);
vNodes.push_back(pnode);
return pnode;
} else if (!proxyConnectionFailed) {
@ -1901,6 +1898,12 @@ bool CConnman::OpenNetworkConnection(const CAddress& addrConnect, bool fCountFai
if (fConnectToMasternode)
pnode->fMasternode = true;
{
LOCK(cs_vNodes);
vNodes.push_back(pnode);
}
GetNodeSignals().InitializeNode(pnode, *this);
return true;
}