Skip to content

Commit 6866b49

Browse files
committed
Merge #10596: Add vConnect to CConnman::Options
352d582 Add vConnect to CConnman::Options (Marko Bencun) Pull request description: Split the "-connect" argument parsing out of CConnman and put it into AppInitMain(). Tree-SHA512: f2d3efc4e2c5808ff98696ea20dd96df599bc472ed5afc9c3eea305d94c36a6ab50c632aa05396c7c34d1917d91b1e7ccd725656ff2631e2a36d9eac477455dc
2 parents 28485c7 + 352d582 commit 6866b49

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
@@ -1677,7 +1677,14 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
16771677
if (gArgs.IsArgSet("-seednode")) {
16781678
connOptions.vSeedNodes = gArgs.GetArgs("-seednode");
16791679
}
1680-
1680+
// Initiate outbound connections unless connect=0
1681+
connOptions.m_use_addrman_outgoing = !gArgs.IsArgSet("-connect");
1682+
if (!connOptions.m_use_addrman_outgoing) {
1683+
const auto connect = gArgs.GetArgs("-connect");
1684+
if (connect.size() != 1 || connect[0] != "0") {
1685+
connOptions.m_specified_outgoing = connect;
1686+
}
1687+
}
16811688
if (!connman.Start(scheduler, connOptions)) {
16821689
return false;
16831690
}

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, nullptr, strAddr.c_str());
@@ -2344,9 +2344,16 @@ bool CConnman::Start(CScheduler& scheduler, const Options& connOptions)
23442344
// Initiate outbound connections from -addnode
23452345
threadOpenAddedConnections = std::thread(&TraceThread<std::function<void()> >, "addcon", std::function<void()>(std::bind(&CConnman::ThreadOpenAddedConnections, this)));
23462346

2347-
// Initiate outbound connections unless connect=0
2348-
if (!gArgs.IsArgSet("-connect") || gArgs.GetArgs("-connect").size() != 1 || gArgs.GetArgs("-connect")[0] != "0")
2349-
threadOpenConnections = std::thread(&TraceThread<std::function<void()> >, "opencon", std::function<void()>(std::bind(&CConnman::ThreadOpenConnections, this)));
2347+
if (connOptions.m_use_addrman_outgoing && !connOptions.m_specified_outgoing.empty()) {
2348+
if (clientInterface) {
2349+
clientInterface->ThreadSafeMessageBox(
2350+
_("Cannot provide specific connections and have addrman find outgoing connections at the same."),
2351+
"", CClientUIInterface::MSG_ERROR);
2352+
}
2353+
return false;
2354+
}
2355+
if (connOptions.m_use_addrman_outgoing || !connOptions.m_specified_outgoing.empty())
2356+
threadOpenConnections = std::thread(&TraceThread<std::function<void()> >, "opencon", std::function<void()>(std::bind(&CConnman::ThreadOpenConnections, this, connOptions.m_specified_outgoing)));
23502357

23512358
// Process messages
23522359
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

150152
void Init(const Options& connOptions) {
@@ -308,7 +310,7 @@ class CConnman
308310
void ThreadOpenAddedConnections();
309311
void AddOneShot(const std::string& strDest);
310312
void ProcessOneShot();
311-
void ThreadOpenConnections();
313+
void ThreadOpenConnections(std::vector<std::string> connect);
312314
void ThreadMessageHandler();
313315
void AcceptConnection(const ListenSocket& hListenSocket);
314316
void ThreadSocketHandler();

0 commit comments

Comments
 (0)