RPM: metaproxy running as user "metaproxy"
[metaproxy-moved-to-github.git] / src / filter_zoom.cpp
index 9ae28bb..e8e1681 100644 (file)
@@ -322,7 +322,7 @@ void yf::Zoom::Backend::connect(std::string zurl,
                                 int *error, char **addinfo,
                                 ODR odr)
 {
-    ZOOM_connection_connect(m_connection, zurl.c_str(), 0);
+    ZOOM_connection_connect(m_connection, zurl.length() ? zurl.c_str() : 0, 0);
     get_zoom_error(error, addinfo, odr);
 }
 
@@ -872,7 +872,10 @@ yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases(
     std::list<BackendPtr>::const_iterator map_it;
     if (m_backend && !m_backend->enable_explain && 
         m_backend->m_frontend_database == database)
+    {
+        m_backend->connect("", error, addinfo, odr);
         return m_backend;
+    }
 
     std::string input_args;
     std::string torus_db;
@@ -1002,7 +1005,7 @@ yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases(
         if (!doc)
         {
             *error = YAZ_BIB1_DATABASE_DOES_NOT_EXIST;
-            *addinfo = odr_strdup(odr, database.c_str());
+            *addinfo = odr_strdup(odr, torus_db.c_str());
             BackendPtr b;
             return b;
         }
@@ -1035,7 +1038,7 @@ yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases(
     if (!sptr)
     {
         *error = YAZ_BIB1_DATABASE_DOES_NOT_EXIST;
-        *addinfo = odr_strdup(odr, database.c_str());
+        *addinfo = odr_strdup(odr, torus_db.c_str());
         BackendPtr b;
         return b;
     }
@@ -1933,7 +1936,7 @@ next_proxy:
         wrbuf_destroy(ccl_wrbuf);
         if (!cn)
         {
-            char *addinfo = odr_strdup(odr, ccl_err_msg(cerror));
+            char *addinfo = odr_strdup_null(odr, ccl_err_msg(cerror));
             error = YAZ_BIB1_MALFORMED_QUERY;
 
             switch (cerror)