summaryrefslogtreecommitdiff
path: root/node
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2014-08-21 18:07:27 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2014-08-21 18:07:27 -0700
commiteadff71d37f57821bb68203bc79bcd44f8c85c43 (patch)
treebd95b90fef961366911c4f44e3fc0290c71ea82d /node
parentaf62a6cade200abdf5a282fb3f0ae1a9ec875dd2 (diff)
downloadinfinitytier-eadff71d37f57821bb68203bc79bcd44f8c85c43.tar.gz
infinitytier-eadff71d37f57821bb68203bc79bcd44f8c85c43.zip
Another fix to Network life cycle.
Diffstat (limited to 'node')
-rw-r--r--node/Network.cpp10
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);