{ // must have a destructor because of boost::scoped_ptr
}
-void yf::SRUtoZ3950::configure(const xmlNode *xmlnode, bool test_only)
+void yf::SRUtoZ3950::configure(const xmlNode *xmlnode, bool test_only,
+ const char *path)
{
m_p->configure(xmlnode);
}
return;
}
+ bool enable_package_log = false;
std::string zurl;
Z_SRW_extra_arg *arg;
{
package.origin().set_max_sockets(atoi(arg->value));
}
-
+ else if (!strcmp(arg->name, "x-session-id"))
+ {
+ package.origin().set_custom_session(arg->value);
+ }
+ else if (!strcmp(arg->name, "x-log-enable"))
+ {
+ if (*arg->value == '1')
+ {
+ enable_package_log = true;
+ package.log_enable();
+ }
+ }
assert(sru_pdu_req);
// filter acts as sink for SRU explain requests
YAZ_SRW_UNSUPP_OPERATION, "unknown");
}
+ if (enable_package_log)
+ {
+ std::string l;
+ package.log_reset(l);
+ if (l.length())
+ {
+ WRBUF w = wrbuf_alloc();
+
+ wrbuf_puts(w, "<log>\n");
+ wrbuf_xmlputs(w, l.c_str());
+ wrbuf_puts(w, "</log>");
+
+ sru_pdu_res->extraResponseData_len = wrbuf_len(w);
+ sru_pdu_res->extraResponseData_buf =
+ odr_strdup(odr_en, wrbuf_cstr(w));
+ wrbuf_destroy(w);
+ }
+ }
+
// build and send SRU response
mp_util::build_sru_response(package, odr_en, soap,
sru_pdu_res, charset, stylesheet);
Z_APDU *apdu = zget_APDU(odr_en, Z_APDU_searchRequest);
Z_SearchRequest *z_searchRequest = apdu->u.searchRequest;
+ // RecordSyntax will always be XML
+ z_searchRequest->preferredRecordSyntax
+ = odr_oiddup(odr_en, yaz_oid_recsyn_xml);
if (!mp_util::set_databases_from_zurl(odr_en, zurl,
&z_searchRequest->num_databaseNames,