+ Package z3950_package(package.session(), package.origin());
+ z3950_package.copy_filter(package);
+
+ Z_SRW_PDU *sru_pdu_res = 0;
+ if (sru_pdu_req->which == Z_SRW_explain_request)
+ {
+ Z_SRW_explainRequest *er_req = sru_pdu_req->u.explain_request;
+ stylesheet = er_req->stylesheet;
+ sru_pdu_res = yaz_srw_get_pdu_e(odr_en, Z_SRW_explain_response,
+ sru_pdu_req);
+ sru_pdu_res->u.explain_response->diagnostics = diagnostic;
+ sru_pdu_res->u.explain_response->num_diagnostics = num_diagnostic;
+ mp_util::build_sru_explain(package, odr_en, sru_pdu_res,
+ sruinfo, explainnode, er_req);
+ }
+ else if (sru_pdu_req->which == Z_SRW_searchRetrieve_request)
+ {
+ Z_SRW_searchRetrieveRequest *sr_req = sru_pdu_req->u.request;
+ stylesheet = sr_req->stylesheet;
+ sru_pdu_res = yaz_srw_get_pdu_e(odr_en, Z_SRW_searchRetrieve_response,
+ sru_pdu_req);
+ sru_pdu_res->u.response->diagnostics = diagnostic;
+ sru_pdu_res->u.response->num_diagnostics = num_diagnostic;
+
+ // checking that we have a query
+ ok = mp_util::check_sru_query_exists(package, odr_en,
+ sru_pdu_res, sr_req);
+
+ if (ok && z3950_init_request(package, odr_en,
+ zurl, sru_pdu_res, sru_pdu_req))