From 5be01906e59d484ec997b594e39bab528845bb78 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Tue, 24 Jan 2017 16:49:15 -0500 Subject: Delete some unused (and broken) functions in CConnman --- src/net.cpp | 28 ---------------------------- src/net.h | 4 ---- 2 files changed, 32 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index 1019d59544..4e296a3114 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -2371,24 +2371,6 @@ void CConnman::GetNodeStats(std::vector& vstats) } } -bool CConnman::DisconnectAddress(const CNetAddr& netAddr) -{ - if (CNode* pnode = FindNode(netAddr)) { - pnode->fDisconnect = true; - return true; - } - return false; -} - -bool CConnman::DisconnectSubnet(const CSubNet& subNet) -{ - if (CNode* pnode = FindNode(subNet)) { - pnode->fDisconnect = true; - return true; - } - return false; -} - bool CConnman::DisconnectNode(const std::string& strNode) { if (CNode* pnode = FindNode(strNode)) { @@ -2409,16 +2391,6 @@ bool CConnman::DisconnectNode(NodeId id) return false; } -void CConnman::RelayTransaction(const CTransaction& tx) -{ - CInv inv(MSG_TX, tx.GetHash()); - LOCK(cs_vNodes); - BOOST_FOREACH(CNode* pnode, vNodes) - { - pnode->PushInventory(inv); - } -} - void CConnman::RecordBytesRecv(uint64_t bytes) { LOCK(cs_totalBytesRecv); diff --git a/src/net.h b/src/net.h index 505962f51a..0b8efcc882 100644 --- a/src/net.h +++ b/src/net.h @@ -243,8 +243,6 @@ public: post(); }; - void RelayTransaction(const CTransaction& tx); - // Addrman functions size_t GetAddressCount() const; void SetServices(const CService &addr, ServiceFlags nServices); @@ -286,10 +284,8 @@ public: size_t GetNodeCount(NumConnections num); void GetNodeStats(std::vector& vstats); - bool DisconnectAddress(const CNetAddr& addr); bool DisconnectNode(const std::string& node); bool DisconnectNode(NodeId id); - bool DisconnectSubnet(const CSubNet& subnet); unsigned int GetSendBufferSize() const; -- cgit v1.2.3 From 3c37dc40d39e1a1e56b6b0d3e660626a78656d4f Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Tue, 24 Jan 2017 16:50:27 -0500 Subject: Ensure cs_vNodes is held when using the return value from FindNode --- src/net.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index 4e296a3114..7489b3f32b 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -369,15 +369,13 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo // In that case, drop the connection that was just created, and return the existing CNode instead. // Also store the name we used to connect in that CNode, so that future FindNode() calls to that // name catch this early. + LOCK(cs_vNodes); CNode* pnode = FindNode((CService)addrConnect); if (pnode) { pnode->AddRef(); - { - LOCK(cs_vNodes); - if (pnode->addrName.empty()) { - pnode->addrName = std::string(pszDest); - } + if (pnode->addrName.empty()) { + pnode->addrName = std::string(pszDest); } CloseSocket(hSocket); return pnode; @@ -2373,6 +2371,7 @@ void CConnman::GetNodeStats(std::vector& vstats) bool CConnman::DisconnectNode(const std::string& strNode) { + LOCK(cs_vNodes); if (CNode* pnode = FindNode(strNode)) { pnode->fDisconnect = true; return true; -- cgit v1.2.3 From 236618061a445d2cb11e722cfac5fdae5be26abb Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Tue, 24 Jan 2017 16:51:22 -0500 Subject: Do not add to vNodes until fOneShot/fFeeler/fAddNode have been set --- src/net.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index 7489b3f32b..108d95a176 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -342,8 +342,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; } } @@ -373,12 +373,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; } } @@ -391,11 +391,6 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo pnode->nServicesExpected = ServiceFlags(addrConnect.nServices & nRelevantServices); pnode->nTimeConnected = GetTime(); pnode->AddRef(); - GetNodeSignals().InitializeNode(pnode, *this); - { - LOCK(cs_vNodes); - vNodes.push_back(pnode); - } return pnode; } else if (!proxyConnectionFailed) { @@ -1838,6 +1833,12 @@ bool CConnman::OpenNetworkConnection(const CAddress& addrConnect, bool fCountFai if (fAddnode) pnode->fAddnode = true; + { + LOCK(cs_vNodes); + vNodes.push_back(pnode); + } + GetNodeSignals().InitializeNode(pnode, *this); + return true; } -- cgit v1.2.3