X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Ffilter_zoom.cpp;h=e8e16816df2314ff0546b9f85afbff117a38ce04;hb=e55d02d0c0a3d7c2f17fa224442478d2bfde501c;hp=9ae28bb3a05d0517d88197f8ead0b392913075ef;hpb=ade7f72c658f8232e6afbc79b0094f7c6edd0fd7;p=metaproxy-moved-to-github.git diff --git a/src/filter_zoom.cpp b/src/filter_zoom.cpp index 9ae28bb..e8e1681 100644 --- a/src/filter_zoom.cpp +++ b/src/filter_zoom.cpp @@ -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::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)