{
Z_SRW_explainRequest *srw_req = sr->u.explain_request;
yaz_log(log_requestdetail, "Got SRW ExplainRequest");
- *http_code = 404;
srw_bend_init(assoc, &srw_res->diagnostics, &srw_res->num_diagnostics, sr);
+ if (!assoc->init && srw_res->num_diagnostics == 0)
+ *http_code = 404;
if (assoc->init)
{
bend_explain_rr rr;
static void srw_bend_scan(association *assoc,
Z_SRW_PDU *sr,
- Z_SRW_scanResponse *srw_res,
+ Z_SRW_PDU *res,
int *http_code)
{
Z_SRW_scanRequest *srw_req = sr->u.scan_request;
+ Z_SRW_scanResponse *srw_res = res->u.scan_response;
yaz_log(log_requestdetail, "Got SRW ScanRequest");
*http_code = 200;
bsrr->step_size = &step_size;
bsrr->entries = 0;
bsrr->setname = 0;
+ bsrr->extra_args = sr->extra_args;
+ bsrr->extra_response_data = 0;
if (bsrr->num_entries > 0)
{
&srw_res->num_diagnostics,
YAZ_SRW_UNSUPP_OPERATION, "scan");
}
+ if (bsrr->extra_response_data)
+ {
+ res->extraResponseData_buf = bsrr->extra_response_data;
+ res->extraResponseData_len = strlen(bsrr->extra_response_data);
+ }
if (bsrr->errcode)
{
int srw_error;
Z_SRW_updateRequest *srw_req = sr->u.update_request;
yaz_log(log_session, "SRWUpdate action=%s", srw_req->operation);
yaz_log(YLOG_DEBUG, "num_diag = %d", srw_res->num_diagnostics );
- *http_code = 404;
srw_bend_init(assoc, &srw_res->diagnostics, &srw_res->num_diagnostics, sr);
+ if (!assoc->init && srw_res->num_diagnostics == 0)
+ *http_code = 404;
if (assoc->init)
{
bend_update_rr rr;
res->u.scan_response->diagnostics = diagnostic;
res->u.scan_response->num_diagnostics = num_diagnostic;
}
- srw_bend_scan(assoc, sr, res->u.scan_response, &http_code);
+ srw_bend_scan(assoc, sr, res, &http_code);
if (http_code == 200)
soap_package->u.generic->p = res;
}
bsrr->errcode = 0;
bsrr->errstring = NULL;
bsrr->search_info = NULL;
- bsrr->search_input = req->otherInfo;
+ bsrr->search_input = req->additionalSearchInfo;
+ if (!bsrr->search_input)
+ bsrr->search_input = req->otherInfo;
bsrr->present_number = *req->mediumSetPresentNumber;
if (assoc->server && assoc->server->cql_transform
bsrr->setname = yaz_oi_get_string_oid(&req->otherInfo,
yaz_oid_userinfo_scan_set, 1, 0);
bsrr->entries = 0;
+ bsrr->extra_args = 0;
+ bsrr->extra_response_data = 0;
/* For YAZ 2.0 and earlier it was the backend handler that
initialized entries (member display_term did not exist)
YAZ 2.0 and later sets 'entries' and initialize all members