diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-08-21 18:07:27 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-08-21 18:07:27 -0700 |
commit | eadff71d37f57821bb68203bc79bcd44f8c85c43 (patch) | |
tree | bd95b90fef961366911c4f44e3fc0290c71ea82d /node | |
parent | af62a6cade200abdf5a282fb3f0ae1a9ec875dd2 (diff) | |
download | infinitytier-eadff71d37f57821bb68203bc79bcd44f8c85c43.tar.gz infinitytier-eadff71d37f57821bb68203bc79bcd44f8c85c43.zip |
Another fix to Network life cycle.
Diffstat (limited to 'node')
-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); |