X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=server%2Fseshigh.c;h=065b860a8393902813ca08e849d8a32cbef49f81;hb=45b64d66df5092f645ce3eb5b979e28d16ed0b07;hp=a2a28f9a14f5eb0017fe3f81368e9babd2bdfcd2;hpb=06e73cb9f6d59fc7a38f17636016f2daaed02548;p=yaz-moved-to-github.git diff --git a/server/seshigh.c b/server/seshigh.c index a2a28f9..065b860 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.154 2003-04-24 13:30:32 adam Exp $ + * $Id: seshigh.c,v 1.159 2003-05-24 19:34:43 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; @@ -818,18 +822,18 @@ static void process_http_request(association *assoc, request *req) if (!strcmp(hreq->method, "GET")) { - char *charset = 0; - int ret = -1; - Z_SOAP *soap_package = 0; char *db = "Default"; const char *p0 = hreq->path, *p1; - static Z_SOAP_Handler soap_handlers[2] = { #if HAVE_XML2 + int ret = -1; + char *charset = 0; + Z_SOAP *soap_package = 0; + static Z_SOAP_Handler soap_handlers[2] = { {"http://www.loc.gov/zing/srw/v1.0/", 0, (Z_SOAP_fun) yaz_srw_codec}, -#endif {0, 0, 0} }; +#endif if (*p0 == '/') p0++; @@ -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,