zoom: use other diagnostic if Torus server is unavailable
[metaproxy-moved-to-github.git] / src / filter_zoom.cpp
index 194fb8b..481ad35 100644 (file)
@@ -1149,8 +1149,9 @@ yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases(
                                          realm, m_p->proxy);
         if (!doc)
         {
-            *error = YAZ_BIB1_DATABASE_DOES_NOT_EXIST;
-            *addinfo = odr_strdup(odr, torus_db.c_str());
+            *error = YAZ_BIB1_UNSPECIFIED_ERROR;
+            *addinfo = odr_strdup(odr, "Torus server unavailable or "
+                                  "incorrectly configured");
             BackendPtr b;
             return b;
         }
@@ -1260,7 +1261,6 @@ yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases(
 
     BackendPtr b(new Backend);
 
-    b->m_proxy = proxy;
     b->sptr = sptr;
     b->xsp = xsp;
     b->m_frontend_database = database;
@@ -1284,6 +1284,7 @@ yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases(
 
     if (proxy.length() == 0)
         proxy = sptr->cfProxy;
+    b->m_proxy = proxy;
     
     if (sptr->cfAuth.length())
     {
@@ -1843,8 +1844,8 @@ yf::Zoom::BackendPtr yf::Zoom::Frontend::explain_search(mp::Package &package,
         if (!doc)
         {
             *error = YAZ_BIB1_UNSPECIFIED_ERROR;
-            *addinfo = odr_strdup(odr, "IR-Explain---1 problem. " 
-                                  "Could not obtain Torus records for Explain");
+            *addinfo = odr_strdup(odr, "Torus server unavailable or "
+                                  "incorrectly configured");
         }
         else
         {
@@ -1878,7 +1879,7 @@ static bool wait_conn(COMSTACK cs, int secs)
     yaz_poll_add(pfd.input_mask, yaz_poll_except);
     if (cs->io_pending && CS_WANT_WRITE)
         yaz_poll_add(pfd.input_mask, yaz_poll_write);
-    else if (cs->io_pending & CS_WANT_READ)
+    if (cs->io_pending & CS_WANT_READ)
         yaz_poll_add(pfd.input_mask, yaz_poll_read);
 
     pfd.fd = cs_fileno(cs);
@@ -1919,6 +1920,8 @@ bool yf::Zoom::Impl::check_proxy(const char *proxy)
                 if (!wait_conn(conn, proxy_timeout))
                     break;
             }
+            if (ret == 0)
+                outcome = true;
         }
     }
     cs_close(conn);
@@ -1943,8 +1946,8 @@ bool yf::Zoom::Frontend::retry(mp::Package &package,
             package.log("zoom", YLOG_WARN, "search failed: trying next proxy");
             return true;
         }
-        error = YAZ_BIB1_INIT_AC_AUTHENTICATION_SYSTEM_ERROR;
-        *addinfo = odr_strdup(odr, "proxy failure");
+        error = YAZ_BIB1_PROXY_FAILURE;
+        *addinfo = odr_strdup(odr, b->m_proxy.c_str());
     }
     else if (same_retries == 0 && proxy_retries == 0)
     {