summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--controller/EmbeddedNetworkController.cpp16
-rw-r--r--controller/EmbeddedNetworkController.hpp15
2 files changed, 17 insertions, 14 deletions
diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp
index 8d5febd9..1d46d5e6 100644
--- a/controller/EmbeddedNetworkController.cpp
+++ b/controller/EmbeddedNetworkController.cpp
@@ -434,6 +434,8 @@ EmbeddedNetworkController::EmbeddedNetworkController(Node *node,const char *dbPa
_db(dbPath,this),
_node(node)
{
+ if ((dbPath[0] == '-')&&(dbPath[1] == 0))
+ _startThreads(); // start threads now in Central harnessed mode
}
EmbeddedNetworkController::~EmbeddedNetworkController()
@@ -1721,4 +1723,18 @@ void EmbeddedNetworkController::_request(
_sender->ncSendConfig(nwid,requestPacketId,identity.address(),*(nc.get()),metaData.getUI(ZT_NETWORKCONFIG_REQUEST_METADATA_KEY_VERSION,0) < 6);
}
+void EmbeddedNetworkController::_startThreads()
+{
+ Mutex::Lock _l(_threads_m);
+ if (_threads.size() == 0) {
+ long hwc = (long)std::thread::hardware_concurrency();
+ if (hwc < 1)
+ hwc = 1;
+ else if (hwc > 16)
+ hwc = 16;
+ for(long i=0;i<hwc;++i)
+ _threads.push_back(Thread::start(this));
+ }
+}
+
} // namespace ZeroTier
diff --git a/controller/EmbeddedNetworkController.hpp b/controller/EmbeddedNetworkController.hpp
index d1217d60..19469164 100644
--- a/controller/EmbeddedNetworkController.hpp
+++ b/controller/EmbeddedNetworkController.hpp
@@ -115,20 +115,7 @@ private:
};
void _request(uint64_t nwid,const InetAddress &fromAddr,uint64_t requestPacketId,const Identity &identity,const Dictionary<ZT_NETWORKCONFIG_METADATA_DICT_CAPACITY> &metaData);
-
- inline void _startThreads()
- {
- Mutex::Lock _l(_threads_m);
- if (_threads.size() == 0) {
- long hwc = (long)std::thread::hardware_concurrency();
- if (hwc < 1)
- hwc = 1;
- else if (hwc > 16)
- hwc = 16;
- for(long i=0;i<hwc;++i)
- _threads.push_back(Thread::start(this));
- }
- }
+ void _startThreads();
// These init objects with default and static/informational fields
inline void _initMember(nlohmann::json &member)