X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Ffilter_frontend_net.cpp;h=c7450c1b1f358b802cf4caaa235373550877e2d5;hb=3597c200e3876e2c7a44e6eca0d60fab397de900;hp=a3ab5f78e00189466cf0de573624a43545a04a5f;hpb=9633f388601013d6a4de9367a307dfe647dbbaa6;p=metaproxy-moved-to-github.git diff --git a/src/filter_frontend_net.cpp b/src/filter_frontend_net.cpp index a3ab5f7..c7450c1 100644 --- a/src/filter_frontend_net.cpp +++ b/src/filter_frontend_net.cpp @@ -103,7 +103,7 @@ namespace metaproxy_1 { ~ThreadPoolPackage(); IThreadPoolMsg *handle(); void result(const char *t_info); - + bool cleanup(void *info); private: yaz_timing_t timer; mp::ZAssocChild *m_assoc_child; @@ -155,6 +155,13 @@ mp::ThreadPoolPackage::~ThreadPoolPackage() delete m_package; } +bool mp::ThreadPoolPackage::cleanup(void *info) +{ + mp::Session *ses = (mp::Session *) info; + + return *ses == m_package->session(); +} + void mp::ThreadPoolPackage::result(const char *t_info) { m_assoc_child->m_no_requests--; @@ -284,7 +291,8 @@ void mp::ZAssocChild::failNotify() mp::ThreadPoolPackage *tp = new mp::ThreadPoolPackage(p, this, m_msg_config); p->copy_route(*m_package); - m_thread_pool_observer->put(tp); + m_thread_pool_observer->cleanup(tp, &m_session); + m_thread_pool_observer->put(tp); } void mp::ZAssocChild::timeoutNotify() @@ -375,6 +383,17 @@ mp::filter::FrontendNet::~FrontendNet() delete m_p->az[i]; delete [] m_p->az; } + m_p->az = 0; +} + +void mp::filter::FrontendNet::stop() const +{ + if (m_p->az) + { + size_t i; + for (i = 0; im_ports.size(); i++) + m_p->az[i]->server(""); + } } bool mp::My_Timer_Thread::timeout()