X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fhttp%2Fhttpthread.cpp;h=2ddfbcda557616cb8eb23ad520f0928c7c113227;hb=f8c0410b12183ecb40aafbb44086fa146b25b528;hp=ceaad4ff136fe078ec9e0e1a723499d2309626e3;hpb=dec33c63afafabf83c3039e916725cac6faef9b3;p=fms.git diff --git a/src/http/httpthread.cpp b/src/http/httpthread.cpp index ceaad4f..2ddfbcd 100644 --- a/src/http/httpthread.cpp +++ b/src/http/httpthread.cpp @@ -19,67 +19,46 @@ HTTPThread::HTTPThread() std::string portstr; Option::Instance()->Get("HTTPListenPort",portstr); StringFunctions::Convert(portstr,m_listenport); - - // push back page handlers - /* - m_pagehandlers.push_back(new ShowCaptchaPage()); - m_pagehandlers.push_back(new OptionsPage(templatestr)); - m_pagehandlers.push_back(new LocalIdentitiesPage(templatestr)); - m_pagehandlers.push_back(new CreateIdentityPage(templatestr)); - m_pagehandlers.push_back(new AnnounceIdentityPage(templatestr)); - m_pagehandlers.push_back(new AddPeerPage(templatestr)); - m_pagehandlers.push_back(new PeerTrustPage(templatestr)); - m_pagehandlers.push_back(new ControlBoardPage(templatestr)); - m_pagehandlers.push_back(new PeerDetailsPage(templatestr)); - m_pagehandlers.push_back(new PeerMaintenancePage(templatestr)); - m_pagehandlers.push_back(new ExecQueryPage(templatestr)); - m_pagehandlers.push_back(new BoardsPage(templatestr)); - m_pagehandlers.push_back(new InsertedFilesPage(templatestr)); - m_pagehandlers.push_back(new ConfirmPage(templatestr)); - // homepage must be last - catch all page handler - m_pagehandlers.push_back(new HomePage(templatestr)); - */ - } -/* -void HTTPThread::PageCallback(shttpd_arg *arg) +void HTTPThread::run() { + m_log->debug("HTTPThread::run thread started."); - HTTPThread *thread=(HTTPThread *)arg->user_data; - - for(std::vector::iterator i=thread->m_pagehandlers.begin(); i!=thread->m_pagehandlers.end(); ) + try { - if((*i)->Handle(arg)==true) + 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"); + + do { - i=thread->m_pagehandlers.end(); - } - else + 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) { - i++; + Poco::Thread::sleep(500); } } - -} -*/ -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(10); - pParams->setMaxThreads(5); - Poco::Net::HTTPServer srv(new FMSHTTPRequestHandlerFactory,sock,pParams); - - srv.start(); - - do + catch(Poco::Exception &e) { - Poco::Thread::sleep(1000); - }while(!IsCancelled()); - - srv.stop(); + m_log->fatal("HTTPThread::run caught "+e.displayText()); + } + catch(...) + { + m_log->fatal("HTTPThread::run caught unknown exception"); + } m_log->debug("HTTPThread::run thread exiting.");