diff options
author | methodus <methodus@web.de> | 2012-12-11 10:06:18 +0100 |
---|---|---|
committer | methodus <methodus@web.de> | 2012-12-11 10:06:18 +0100 |
commit | 7ed916270e9e445b73d463398187b696b36bb91a (patch) | |
tree | 41ed3cbec0e903879830866ebdc71d779ca4208d /server/webserver.cpp | |
parent | ccb5adcecc340db29e1fe2cddd7aef830f79a971 (diff) | |
download | vdr-plugin-upnp-7ed916270e9e445b73d463398187b696b36bb91a.tar.gz vdr-plugin-upnp-7ed916270e9e445b73d463398187b696b36bb91a.tar.bz2 |
Fixed thread cancelation due timeout. Threads should now exit in a clean manner.
Diffstat (limited to 'server/webserver.cpp')
-rw-r--r-- | server/webserver.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/server/webserver.cpp b/server/webserver.cpp index b440a83..e76d519 100644 --- a/server/webserver.cpp +++ b/server/webserver.cpp @@ -26,7 +26,6 @@ cWebserver::cWebserver(std::string address) } cWebserver::~cWebserver(){ - mWebserverThread.Stop(); Stop(); } @@ -35,11 +34,7 @@ bool cWebserver::Start(){ } void cWebserver::Stop(){ - try { - mApplication.shutdown(); - } catch (const std::exception& e){ - esyslog("UPnP\tError while stopping web server: %s", e.what()); - } + mWebserverThread.Stop(); } bool cWebserver::Initialise(){ @@ -166,15 +161,27 @@ cWebserver::cWSThread::cWSThread(cWebserver& webServer) { } +cWebserver::cWSThread::~cWSThread(){ + Stop(); +} + void cWebserver::cWSThread::Action(){ try { - mWebserver.mApplication.run(); + if(Running()){ + mWebserver.mApplication.run(); + dsyslog("UPnP\tStarted web server thread."); + } } catch (const std::exception& e){ esyslog("UPnP\tError while starting web server: %s", e.what()); } } void cWebserver::cWSThread::Stop(){ + try { + tnt::Tntnet::shutdown(); + } catch (const std::exception& e){ + esyslog("UPnP\tError while stopping web server: %s", e.what()); + } Cancel(5); } |