summaryrefslogtreecommitdiff
path: root/node/Node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/Node.cpp')
-rw-r--r--node/Node.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/node/Node.cpp b/node/Node.cpp
index da752bb2..03710dce 100644
--- a/node/Node.cpp
+++ b/node/Node.cpp
@@ -44,6 +44,7 @@
#include <unistd.h>
#include <signal.h>
#include <sys/file.h>
+#include <sys/stat.h>
#endif
#include "Condition.hpp"
@@ -340,6 +341,9 @@ Node::ReasonForTermination Node::run()
unlink((_r->homePath + ZT_PATH_SEPARATOR_S + "status").c_str());
unlink((_r->homePath + ZT_PATH_SEPARATOR_S + "thisdeviceismine").c_str());
+ // Make sure networks.d exists
+ mkdir((_r->homePath + ZT_PATH_SEPARATOR_S + "networks.d").c_str(),0700);
+
// Load or generate config authentication secret
std::string configAuthTokenPath(_r->homePath + ZT_PATH_SEPARATOR_S + "authtoken.secret");
std::string configAuthToken;
@@ -504,7 +508,6 @@ Node::ReasonForTermination Node::run()
_r->topology->eachPeer(Topology::CollectPeersWithDirectPath(needPing));
} else {
_r->topology->eachPeer(Topology::CollectPeersThatNeedPing(needPing));
- _r->topology->eachPeer(Topology::CollectPeersThatNeedFirewallOpener(needFirewallOpener));
}
for(std::vector< SharedPtr<Peer> >::iterator p(needPing.begin());p!=needPing.end();++p) {
@@ -517,6 +520,7 @@ Node::ReasonForTermination Node::run()
}
}
+ _r->topology->eachPeer(Topology::CollectPeersThatNeedFirewallOpener(needFirewallOpener));
for(std::vector< SharedPtr<Peer> >::iterator p(needFirewallOpener.begin());p!=needFirewallOpener.end();++p) {
try {
(*p)->sendFirewallOpener(_r,now);
@@ -537,7 +541,7 @@ Node::ReasonForTermination Node::run()
if ((now - lastClean) >= ZT_DB_CLEAN_PERIOD) {
lastClean = now;
_r->topology->clean();
- _r->nc->cleanAllNetworks();
+ _r->nc->clean();
}
try {