X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fseshigh.c;h=64854a68f86b695d9ba3881cc2d4428956dbb60d;hp=44d6619001283a2fc22244cc12c73b0609e7498f;hb=5a3e6fa63181ab4afa8bce5f01c6de016a333334;hpb=92e360a6e22fc5fda22d7f6a6449c3c8f0ee8fb9 diff --git a/src/seshigh.c b/src/seshigh.c index 44d6619..64854a6 100644 --- a/src/seshigh.c +++ b/src/seshigh.c @@ -25,6 +25,9 @@ * minimize memory allocation/deallocation during normal operation. * */ +#if HAVE_CONFIG_H +#include +#endif #include #include @@ -950,6 +953,7 @@ static void srw_bend_search(association *assoc, rr.errcode = 0; rr.errstring = 0; rr.search_info = 0; + rr.search_input = 0; yaz_log_zquery_level(log_requestdetail,rr.query); (assoc->init->bend_search)(assoc->backend, &rr); @@ -1139,7 +1143,7 @@ static void srw_bend_search(association *assoc, (srw_res->numberOfRecords ? *srw_res->numberOfRecords : 0)); } - wrbuf_printf(wr, " %s " ODR_INT_PRINTF " +%d", + wrbuf_printf(wr, " %s " ODR_INT_PRINTF "+%d", (srw_res->resultSetId ? srw_res->resultSetId : "-"), (srw_req->startRecord ? *srw_req->startRecord : 1), @@ -1906,7 +1910,7 @@ static void process_http_request(association *assoc, request *req) keepalive = 1; hres->version = "1.1"; } - if (!keepalive) + if (!keepalive || !assoc->last_control->keepalive) { z_HTTP_header_add(o, &hres->headers, "Connection", "close"); assoc->state = ASSOC_DEAD; @@ -2032,7 +2036,7 @@ static int process_z_request(association *assoc, request *req, char **msg) } else { - yaz_log(YLOG_DEBUG, " result unavailble"); + yaz_log(YLOG_DEBUG, " result unavailable"); retval = -1; } return retval; @@ -2088,7 +2092,7 @@ static int process_gdu_response(association *assoc, request *req, Z_GDU *res) */ static int process_z_response(association *assoc, request *req, Z_APDU *res) { - Z_GDU *gres = (Z_GDU *) odr_malloc(assoc->encode, sizeof(*res)); + Z_GDU *gres = (Z_GDU *) odr_malloc(assoc->encode, sizeof(*gres)); gres->which = Z_GDU_Z3950; gres->u.z3950 = res; @@ -2158,7 +2162,7 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb) yaz_log(log_requestdetail, "Config: %s", cb->configname); - iochan_settimeout(assoc->client_chan, cb->idle_timeout * 60); + iochan_settimeout(assoc->client_chan, cb->idle_timeout); /* we have a backend control block, so call that init function */ if (!(binitres = (*cb->bend_init)(assoc->init))) @@ -2518,6 +2522,8 @@ static Z_Records *pack_records(association *a, char *setname, Odr_int start, { yaz_log(log_requestdetail, " Dropped last normal-sized record"); *pres = Z_PresentStatus_partial_2; + if (*next > 0) + (*next)--; break; } /* record can only be fetched by itself */ @@ -2528,7 +2534,9 @@ static Z_Records *pack_records(association *a, char *setname, Odr_int start, { yaz_log(YLOG_DEBUG, " Dropped it"); reclist->records[reclist->num_records] = - surrogatediagrec(a, freq.basename, 16, 0); + surrogatediagrec( + a, freq.basename, + YAZ_BIB1_RECORD_EXCEEDS_PREFERRED_MESSAGE_SIZE, 0); reclist->num_records++; dumped_records += this_length; continue; @@ -2540,7 +2548,9 @@ static Z_Records *pack_records(association *a, char *setname, Odr_int start, "this=%d max=%d", this_length, a->maximumRecordSize); reclist->records[reclist->num_records] = - surrogatediagrec(a, freq.basename, 17, 0); + surrogatediagrec( + a, freq.basename, + YAZ_BIB1_RECORD_EXCEEDS_MAXIMUM_RECORD_SIZE, 0); reclist->num_records++; dumped_records += this_length; continue; @@ -2554,7 +2564,10 @@ static Z_Records *pack_records(association *a, char *setname, Odr_int start, thisrec->which = Z_NamePlusRecord_databaseRecord; if (!freq.output_format) - freq.output_format = freq.request_format; + { + yaz_log(YLOG_WARN, "bend_fetch output_format not set"); + return 0; + } thisrec->u.databaseRecord = z_ext_record_oid( a->encode, freq.output_format, freq.record, freq.len); if (!thisrec->u.databaseRecord) @@ -2608,6 +2621,7 @@ static Z_APDU *process_searchRequest(association *assoc, request *reqb) bsrr->errcode = 0; bsrr->errstring = NULL; bsrr->search_info = NULL; + bsrr->search_input = req->otherInfo; if (assoc->server && assoc->server->cql_transform && req->query->which == Z_Query_type_104