X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Ffilter_frontend_net.cpp;h=ec0e78e92bc65439f191ae54c158038959091960;hb=9838c2eadf06b6bfe3d6eb264c1b485b51ba1a06;hp=ae2e9c6106f90f219165b6fd67d420003fb6ce89;hpb=491b957f16710bd20d924466d8ba3d7208f60573;p=metaproxy-moved-to-github.git diff --git a/src/filter_frontend_net.cpp b/src/filter_frontend_net.cpp index ae2e9c6..ec0e78e 100644 --- a/src/filter_frontend_net.cpp +++ b/src/filter_frontend_net.cpp @@ -34,6 +34,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include #include "gduutil.hpp" +#include #include @@ -67,7 +68,7 @@ namespace metaproxy_1 { double m_duration_max; double m_duration_min; double m_duration_total; - bool m_stop; + int m_stop_signo; public: Rep(); ~Rep(); @@ -527,7 +528,7 @@ yf::FrontendNet::Rep::Rep() m_duration_max = 0.0; m_duration_min = 0.0; m_duration_total = 0.0; - m_stop = false; + m_stop_signo = 0; } yf::FrontendNet::Rep::~Rep() @@ -546,9 +547,9 @@ yf::FrontendNet::~FrontendNet() { } -void yf::FrontendNet::stop() const +void yf::FrontendNet::stop(int signo) const { - m_p->m_stop = true; + m_p->m_stop_signo = signo; } bool yf::FrontendNet::My_Timer_Thread::timeout() @@ -592,9 +593,11 @@ void yf::FrontendNet::process(mp::Package &package) const } while (m_p->mySocketManager.processEvent() > 0) { - if (m_p->m_stop) - { - m_p->m_stop = false; + if (m_p->m_stop_signo == SIGTERM) + break; /* stop right away */ + if (m_p->m_stop_signo == SIGUSR1) + { /* just stop listeners and cont till all sessions are done*/ + m_p->m_stop_signo = 0; if (m_p->az) { size_t i;