diff options
Diffstat (limited to 'node/Network.cpp')
-rw-r--r-- | node/Network.cpp | 10 |
1 files changed, 8 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); |