Year 2007.
[metaproxy-moved-to-github.git] / src / filter_z3950_client.cpp
index e78a76b..7711952 100644 (file)
@@ -1,7 +1,7 @@
-/* $Id: filter_z3950_client.cpp,v 1.25 2006-03-29 13:44:45 adam Exp $
-   Copyright (c) 2005-2006, Index Data.
+/* $Id: filter_z3950_client.cpp,v 1.29 2007-01-25 14:05:54 adam Exp $
+   Copyright (c) 2005-2007, Index Data.
 
-%LICENSE%
+   See the LICENSE file for details
  */
 
 #include "config.hpp"
@@ -62,6 +62,7 @@ namespace metaproxy_1 {
 
         class Z3950Client::Rep {
         public:
+            // number of seconds to wait before we give up request
             int m_timeout_sec;
             boost::mutex m_mutex;
             boost::condition m_cond_session_ready;
@@ -192,6 +193,7 @@ yf::Z3950Client::Assoc *yf::Z3950Client::Rep::get_assoc(Package &package)
         while(true)
         {
 #if 0
+            // double init .. NOT working yet
             if (gdu && gdu->which == Z_GDU_Z3950 &&
                 gdu->u.z3950->which == Z_APDU_initRequest)
             {
@@ -225,8 +227,7 @@ yf::Z3950Client::Assoc *yf::Z3950Client::Rep::get_assoc(Package &package)
         return 0;
     }
     std::list<std::string> vhosts;
-    mp::util::get_vhost_otherinfo(&apdu->u.initRequest->otherInfo,
-                                   true, vhosts);
+    mp::util::remove_vhost_otherinfo(&apdu->u.initRequest->otherInfo, vhosts);
     size_t no_vhosts = vhosts.size();
     if (no_vhosts == 0)
     {
@@ -285,7 +286,7 @@ void yf::Z3950Client::Rep::send_and_receive(Package &package,
     if (!c->m_connected)
     {
         c->client(c->m_host.c_str());
-        c->timeout(1);
+        c->timeout(1);  // so timeoutNotify gets called once per second
 
         while (!c->m_destroyed && c->m_waiting 
                && c->m_socket_manager->processEvent() > 0)
@@ -371,12 +372,7 @@ void yf::Z3950Client::configure(const xmlNode *ptr)
             continue;
         if (!strcmp((const char *) ptr->name, "timeout"))
         {
-            std::string timeout_str = mp::xml::get_text(ptr);
-            int timeout_sec = atoi(timeout_str.c_str());
-            if (timeout_sec < 2)
-                throw mp::filter::FilterException("Bad timeout value " 
-                                                   + timeout_str);
-            m_p->m_timeout_sec = timeout_sec;
+            m_p->m_timeout_sec = mp::xml::get_int(ptr->children, 30);
         }
         else
         {