sptr = it->second;
else if (torus_url.length() > 0)
{
+ std::string torus_addinfo;
std::string torus_query = "udb==" + torus_db;
xmlDoc *doc = mp::get_searchable(package,torus_url, torus_db,
torus_query,
- realm, m_p->proxy);
+ realm, m_p->proxy,
+ torus_addinfo);
if (!doc)
{
*error = YAZ_BIB1_UNSPECIFIED_ERROR;
- *addinfo = odr_strdup(odr, "Torus server unavailable or "
- "incorrectly configured");
+ if (torus_addinfo.length())
+ *addinfo = odr_strdup(odr, torus_addinfo.c_str());
BackendPtr b;
return b;
}
else if (query->which == Z_Query_type_104 &&
query->u.type_104->which == Z_External_CQL)
{
+ std::string torus_addinfo;
std::string torus_query(query->u.type_104->u.cql);
xmlDoc *doc = mp::get_searchable(package, torus_url, "",
torus_query,
- realm, m_p->proxy);
+ realm, m_p->proxy,
+ torus_addinfo);
if (m_p->explain_xsp)
{
xmlDoc *rec_res = xsltApplyStylesheet(m_p->explain_xsp, doc, 0);
if (!doc)
{
*error = YAZ_BIB1_UNSPECIFIED_ERROR;
- *addinfo = odr_strdup(odr, "Torus server unavailable or "
- "incorrectly configured");
+ if (torus_addinfo.length())
+ *addinfo = odr_strdup(odr, torus_addinfo.c_str());
}
else
{
std::string dummy_db;
std::string dummy_realm;
+ std::string torus_addinfo;
xmlDoc *doc = mp::get_searchable(package, m_p->torus_auth_url, dummy_db,
- torus_query, dummy_realm, m_p->proxy);
+ torus_query, dummy_realm, m_p->proxy,
+ torus_addinfo);
if (!doc)
{
// something fundamental broken in lookup.
*error = YAZ_BIB1_TEMPORARY_SYSTEM_ERROR;
- *addinfo = odr_strdup(odr, "zoom: torus server unavailable or "
- "incorrectly configured.");
+ if (torus_addinfo.length())
+ *addinfo = odr_strdup(odr, torus_addinfo.c_str());
return;
}
const xmlNode *ptr = xmlDocGetRootElement(doc);
std::string url_template, const std::string &db,
const std::string &query,
const std::string &realm,
- const std::string &proxy)
+ const std::string &proxy,
+ std::string &addinfo)
{
// http://mk2.indexdata.com/torus2/searchable/records/?query=udb%3d%db
// or
package.log("zoom", YLOG_LOG, "Torus: %s OK",
url_template.c_str());
else
+ {
package.log("zoom", YLOG_WARN, "Torus: %s FAIL. XML parse failed",
url_template.c_str());
+ addinfo = "Torus: XML parse failed";
+ }
}
else
{
+ addinfo = "Torus: ";
if (http_response)
{
package.log("zoom", YLOG_WARN, "Torus: %s FAIL. HTTP code %d",
url_template.c_str(), http_response->code);
+ addinfo += std::string(http_response->content_buf,
+ http_response->content_len);
}
else
+ {
+ addinfo += "unknown error";
package.log("zoom", YLOG_WARN, "Torus: %s FAIL. No HTTP response",
url_template.c_str());
+ }
}
if (http_response && http_response->content_buf)