X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=server%2Fseshigh.c;h=8732dc437231772d703da7c8a754bdf51d0f44d3;hb=aeb5cc9755e2e4d6a788f0bf162017215772cbf8;hp=f2a9bfb663cba7c9dc12e873ddbaa89429fb57ad;hpb=bc9920b48da91d87e1c0e033a9151663998d6b6b;p=yaz-moved-to-github.git diff --git a/server/seshigh.c b/server/seshigh.c index f2a9bfb..8732dc4 100644 --- a/server/seshigh.c +++ b/server/seshigh.c @@ -2,7 +2,7 @@ * Copyright (c) 1995-2003, Index Data * See the file LICENSE for details. * - * $Id: seshigh.c,v 1.155 2003-04-29 21:20:33 adam Exp $ + * $Id: seshigh.c,v 1.160 2003-07-16 21:02:06 adam Exp $ */ /* @@ -326,8 +326,10 @@ void ir_session(IOCHAN h, int event) odr_setbuf(assoc->decode, assoc->input_buffer, res, 0); if (!z_GDU(assoc->decode, &req->gdu_request, 0, 0)) { - yaz_log(LOG_LOG, "ODR error on incoming PDU: %s [near byte %d] ", + yaz_log(LOG_LOG, "ODR error on incoming PDU: %s [element %s] " + "[near byte %d] ", odr_errmsg(odr_geterror(assoc->decode)), + odr_getelement(assoc->decode), odr_offset(assoc->decode)); if (assoc->decode->error != OHTTP) { @@ -658,20 +660,22 @@ static void srw_bend_search(association *assoc, request *req, } else { + int number = srw_req->maximumRecords ? *srw_req->maximumRecords : 0; + int start = srw_req->startRecord ? *srw_req->startRecord : 1; + + yaz_log(LOG_LOG, "Request to pack %d+%d out of %d", + start, number, rr.hits); + srw_res->numberOfRecords = odr_intdup(assoc->encode, rr.hits); - if (srw_req->maximumRecords && *srw_req->maximumRecords > 0) + if (number > 0) { - int number = *srw_req->maximumRecords; - int start = 1; int i; - if (srw_req->startRecord) - start = *srw_req->startRecord; - - yaz_log(LOG_DEBUG, "srw_bend_search. start=%d max=%d", - start, *srw_req->maximumRecords); - - if (start <= rr.hits) + if (start > rr.hits) + { + yaz_log(LOG_LOG, "Request out or range"); + } + else { int j = 0; int packing = Z_SRW_recordPacking_string; @@ -766,7 +770,7 @@ static char *uri_val(const char *path, const char *name, ODR o) const char *p1 = strchr(path, '='); if (!p1) break; - if (p1 - path == nlen && !memcmp(path, name, nlen)) + if ((size_t)(p1 - path) == nlen && !memcmp(path, name, nlen)) { size_t i = 0; char *ret; @@ -1379,8 +1383,9 @@ static int process_gdu_response(association *assoc, request *req, Z_GDU *res) } if (!z_GDU(assoc->encode, &res, 0, 0)) { - yaz_log(LOG_WARN, "ODR error when encoding response: %s", - odr_errmsg(odr_geterror(assoc->decode))); + yaz_log(LOG_WARN, "ODR error when decoding PDU: %s [element %s]", + odr_errmsg(odr_geterror(assoc->decode)), + odr_getelement(assoc->decode)); return -1; } req->response = odr_getbuf(assoc->encode, &req->len_response, @@ -2293,6 +2298,7 @@ static Z_APDU *process_sortRequest(association *assoc, request *reqb, res->num_diagnostics = 0; res->diagnostics = 0; } + res->resultCount = 0; res->otherInfo = 0; apdu->which = Z_APDU_sortResponse;