X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fzoom-sru.c;h=57f02a38d8f449d2ac958c353d2fbcf2befcb02d;hb=d962efcd2c1f0a3abfb0c40e81e298d69a9757bd;hp=0ff4e3c993d7afe766766e8f42c73a1dd1e90fc3;hpb=96e65728eefb6d7efef6e2f74a3b0d64f92b3c23;p=yaz-moved-to-github.git diff --git a/src/zoom-sru.c b/src/zoom-sru.c index 0ff4e3c..57f02a3 100644 --- a/src/zoom-sru.c +++ b/src/zoom-sru.c @@ -51,7 +51,7 @@ static zoom_ret send_srw(ZOOM_connection c, Z_SRW_PDU *sr) } else if (c->sru_mode == zoom_sru_solr) { - yaz_solr_encode(gdu->u.HTTP_Request, sr, c->odr_out, c->charset); + yaz_solr_encode_request(gdu->u.HTTP_Request, sr, c->odr_out, c->charset); } if (!z_GDU(c->odr_out, &gdu, 0, 0)) return zoom_complete; @@ -283,8 +283,9 @@ static zoom_ret handle_srw_response(ZOOM_connection c, } else { - if (res->numberOfRecords) + if (res->numberOfRecords) { resultset->size = *res->numberOfRecords; + } for (i = 0; inum_records; i++) { int pos; @@ -294,13 +295,16 @@ static zoom_ret handle_srw_response(ZOOM_connection c, Z_NamePlusRecord *npr = (Z_NamePlusRecord *) odr_malloc(c->odr_in, sizeof(Z_NamePlusRecord)); - + /* + * TODO This does not work with 0-based recordPositions. + * We will iterate over one twice + */ if (res->records[i].recordPosition && *res->records[i].recordPosition > 0) pos = *res->records[i].recordPosition - 1; else pos = *start + i; - + sru_rec = &res->records[i]; npr->databaseName = 0; @@ -336,9 +340,9 @@ static zoom_ret handle_srw_response(ZOOM_connection c, *start += i; if (*count + *start > resultset->size) *count = resultset->size - *start; + yaz_log(YLOG_DEBUG, "SRU result set size " ODR_INT_PRINTF " start %d count %d", resultset->size, *start, *count); if (*count < 0) *count = 0; - nmem = odr_extract_mem(c->odr_in); nmem_transfer(odr_getmem(resultset->odr), nmem); nmem_destroy(nmem);