summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--node/Network.cpp10
-rw-r--r--osnet/OSXEthernetTap.cpp1
2 files changed, 9 insertions, 2 deletions
diff --git a/node/Network.cpp b/node/Network.cpp
index b3f065ce..ff1e4a01 100644
--- a/node/Network.cpp
+++ b/node/Network.cpp
@@ -64,7 +64,11 @@ const char *Network::statusString(const Status s)
Network::~Network()
{
- Thread::join(_setupThread);
+ _lock.lock();
+ if ((_setupThread)&&(!_destroyed)) {
+ _lock.unlock();
+ Thread::join(_setupThread);
+ } else _lock.unlock();
{
Mutex::Lock _l(_lock);
@@ -414,7 +418,9 @@ void Network::destroy()
_enabled = false;
_destroyed = true;
- Thread::join(_setupThread);
+ if (_setupThread)
+ Thread::join(_setupThread);
+ _setupThread = Thread();
if (_tap)
_r->tapFactory->close(_tap,true);
diff --git a/osnet/OSXEthernetTap.cpp b/osnet/OSXEthernetTap.cpp
index ebaa2858..6164358d 100644
--- a/osnet/OSXEthernetTap.cpp
+++ b/osnet/OSXEthernetTap.cpp
@@ -262,6 +262,7 @@ static inline void _intl_freeifmaddrs(struct _intl_ifmaddrs *ifmp)
#include "../node/Constants.hpp"
#include "../node/Utils.hpp"
+#include "../node/Mutex.hpp"
#include "OSXEthernetTap.hpp"
// ff:ff:ff:ff:ff:ff with no ADI