X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fhttp%2Fhttpthread.cpp;h=2ddfbcda557616cb8eb23ad520f0928c7c113227;hb=f8c0410b12183ecb40aafbb44086fa146b25b528;hp=89edc931cfb884ddaf85e585738a08d1fae6abef;hpb=822f84f5dac64183c556bd86fea8cd7b0527f528;p=fms.git diff --git a/src/http/httpthread.cpp b/src/http/httpthread.cpp index 89edc93..2ddfbcd 100644 --- a/src/http/httpthread.cpp +++ b/src/http/httpthread.cpp @@ -25,28 +25,39 @@ void HTTPThread::run() { m_log->debug("HTTPThread::run thread started."); - Poco::Net::ServerSocket sock(m_listenport); - Poco::Net::HTTPServerParams* pParams = new Poco::Net::HTTPServerParams; - pParams->setMaxQueued(30); - pParams->setMaxThreads(5); - Poco::Net::HTTPServer srv(new FMSHTTPRequestHandlerFactory,sock,pParams); + try + { + Poco::Net::ServerSocket sock(m_listenport); + Poco::Net::HTTPServerParams* pParams = new Poco::Net::HTTPServerParams; + pParams->setMaxQueued(30); + pParams->setMaxThreads(5); + Poco::Net::HTTPServer srv(new FMSHTTPRequestHandlerFactory,sock,pParams); + + srv.start(); + m_log->trace("Started HTTPServer"); - srv.start(); - m_log->trace("Started HTTPServer"); + do + { + Poco::Thread::sleep(1000); + }while(!IsCancelled()); - do + m_log->trace("Trying to stop HTTPServer"); + srv.stop(); + m_log->trace("Stopped HTTPServer"); + + m_log->trace("Waiting for current HTTP requests to finish"); + while(srv.currentConnections()>0) + { + Poco::Thread::sleep(500); + } + } + catch(Poco::Exception &e) { - Poco::Thread::sleep(1000); - }while(!IsCancelled()); - - m_log->trace("Trying to stop HTTPServer"); - srv.stop(); - m_log->trace("Stopped HTTPServer"); - - m_log->trace("Waiting for current HTTP requests to finish"); - while(srv.currentConnections()>0) + m_log->fatal("HTTPThread::run caught "+e.displayText()); + } + catch(...) { - Poco::Thread::sleep(500); + m_log->fatal("HTTPThread::run caught unknown exception"); } m_log->debug("HTTPThread::run thread exiting.");