Merge branch 'master' into graceful_stop
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 17 Apr 2012 10:49:12 +0000 (12:49 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 17 Apr 2012 10:49:12 +0000 (12:49 +0200)
1  2 
src/filter_frontend_net.cpp

@@@ -103,7 -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 +155,13 @@@ mp::ThreadPoolPackage::~ThreadPoolPacka
      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 +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,17 -383,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; i<m_p->m_ports.size(); i++)
 +            m_p->az[i]->server("");
 +    }
  }
  
  bool mp::My_Timer_Thread::timeout()