summaryrefslogtreecommitdiff
path: root/server/webserver.cpp
diff options
context:
space:
mode:
authormethodus <methodus@web.de>2012-12-11 10:06:18 +0100
committermethodus <methodus@web.de>2012-12-11 10:06:18 +0100
commit7ed916270e9e445b73d463398187b696b36bb91a (patch)
tree41ed3cbec0e903879830866ebdc71d779ca4208d /server/webserver.cpp
parentccb5adcecc340db29e1fe2cddd7aef830f79a971 (diff)
downloadvdr-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.cpp21
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);
}