X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fzoom-sru.c;h=687ca8392e963def87e716e854a8dcb60f463ece;hb=fe42f72dc30321041420cf2d1a83867b1c450f38;hp=9936bdd17c0917f970f38703087d40e40a3fb3b9;hpb=5242cb5a8634bfa38b9333ff7f903e718ac6e292;p=yaz-moved-to-github.git diff --git a/src/zoom-sru.c b/src/zoom-sru.c index 9936bdd..687ca83 100644 --- a/src/zoom-sru.c +++ b/src/zoom-sru.c @@ -313,7 +313,7 @@ static zoom_ret handle_srw_response(ZOOM_connection c, } for (i = 0; inum_records; i++) { - int pos; + int pos = *start + i; Z_SRW_record *sru_rec; Z_SRW_diagnostic *diag = 0; int num_diag; @@ -321,12 +321,10 @@ static zoom_ret handle_srw_response(ZOOM_connection c, Z_NamePlusRecord *npr = (Z_NamePlusRecord *) odr_malloc(c->odr_in, sizeof(Z_NamePlusRecord)); - /* recordPosition is 1 based */ + /* only trust recordPosition if >= calculated position */ if (res->records[i].recordPosition && - *res->records[i].recordPosition > 0) + *res->records[i].recordPosition >= pos + 1) pos = *res->records[i].recordPosition - 1; - else - pos = *start + i; sru_rec = &res->records[i]; @@ -426,7 +424,7 @@ int ZOOM_handle_sru(ZOOM_connection c, Z_HTTP_Response *hres, Z_SOAP *soap_package = 0; ODR o = c->odr_in; Z_SOAP_Handler soap_handlers[3] = { - {YAZ_XMLNS_SRU_v1_1, 0, (Z_SOAP_fun) yaz_srw_codec}, + {YAZ_XMLNS_SRU_v1_response, 0, (Z_SOAP_fun) yaz_srw_codec}, {YAZ_XMLNS_SRU_v2_response, 0, (Z_SOAP_fun) yaz_srw_codec}, {0, 0, 0} };