Skip to content

Commit 352d582

Browse files
author
Marko Bencun
committed
Add vConnect to CConnman::Options
Split the "-connect" argument parsing out of CConnman and put it into AppInitMain().
1 parent 7b6e8bc commit 352d582

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

src/init.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1651,7 +1651,14 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
16511651
if (gArgs.IsArgSet("-seednode")) {
16521652
connOptions.vSeedNodes = gArgs.GetArgs("-seednode");
16531653
}
1654-
1654+
// Initiate outbound connections unless connect=0
1655+
connOptions.m_use_addrman_outgoing = !gArgs.IsArgSet("-connect");
1656+
if (!connOptions.m_use_addrman_outgoing) {
1657+
const auto connect = gArgs.GetArgs("-connect");
1658+
if (connect.size() != 1 || connect[0] != "0") {
1659+
connOptions.m_specified_outgoing = connect;
1660+
}
1661+
}
16551662
if (!connman.Start(scheduler, connOptions)) {
16561663
return false;
16571664
}

src/net.cpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1674,15 +1674,15 @@ void CConnman::ProcessOneShot()
16741674
}
16751675
}
16761676

1677-
void CConnman::ThreadOpenConnections()
1677+
void CConnman::ThreadOpenConnections(const std::vector<std::string> connect)
16781678
{
16791679
// Connect to specific addresses
1680-
if (gArgs.IsArgSet("-connect"))
1680+
if (!connect.empty())
16811681
{
16821682
for (int64_t nLoop = 0;; nLoop++)
16831683
{
16841684
ProcessOneShot();
1685-
for (const std::string& strAddr : gArgs.GetArgs("-connect"))
1685+
for (const std::string& strAddr : connect)
16861686
{
16871687
CAddress addr(CService(), NODE_NONE);
16881688
OpenNetworkConnection(addr, false, NULL, strAddr.c_str());
@@ -2360,9 +2360,16 @@ bool CConnman::Start(CScheduler& scheduler, Options connOptions)
23602360
// Initiate outbound connections from -addnode
23612361
threadOpenAddedConnections = std::thread(&TraceThread<std::function<void()> >, "addcon", std::function<void()>(std::bind(&CConnman::ThreadOpenAddedConnections, this)));
23622362

2363-
// Initiate outbound connections unless connect=0
2364-
if (!gArgs.IsArgSet("-connect") || gArgs.GetArgs("-connect").size() != 1 || gArgs.GetArgs("-connect")[0] != "0")
2365-
threadOpenConnections = std::thread(&TraceThread<std::function<void()> >, "opencon", std::function<void()>(std::bind(&CConnman::ThreadOpenConnections, this)));
2363+
if (connOptions.m_use_addrman_outgoing && !connOptions.m_specified_outgoing.empty()) {
2364+
if (clientInterface) {
2365+
clientInterface->ThreadSafeMessageBox(
2366+
_("Cannot provide specific connections and have addrman find outgoing connections at the same."),
2367+
"", CClientUIInterface::MSG_ERROR);
2368+
}
2369+
return false;
2370+
}
2371+
if (connOptions.m_use_addrman_outgoing || !connOptions.m_specified_outgoing.empty())
2372+
threadOpenConnections = std::thread(&TraceThread<std::function<void()> >, "opencon", std::function<void()>(std::bind(&CConnman::ThreadOpenConnections, this, connOptions.m_specified_outgoing)));
23662373

23672374
// Process messages
23682375
threadMessageHandler = std::thread(&TraceThread<std::function<void()> >, "msghand", std::function<void()>(std::bind(&CConnman::ThreadMessageHandler, this)));

src/net.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ class CConnman
145145
std::vector<std::string> vSeedNodes;
146146
std::vector<CSubNet> vWhitelistedRange;
147147
std::vector<CService> vBinds, vWhiteBinds;
148+
bool m_use_addrman_outgoing = true;
149+
std::vector<std::string> m_specified_outgoing;
148150
};
149151
CConnman(uint64_t seed0, uint64_t seed1);
150152
~CConnman();
@@ -293,7 +295,7 @@ class CConnman
293295
void ThreadOpenAddedConnections();
294296
void AddOneShot(const std::string& strDest);
295297
void ProcessOneShot();
296-
void ThreadOpenConnections();
298+
void ThreadOpenConnections(std::vector<std::string> connect);
297299
void ThreadMessageHandler();
298300
void AcceptConnection(const ListenSocket& hListenSocket);
299301
void ThreadSocketHandler();

0 commit comments

Comments
 (0)