X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fzoom-z3950.c;h=8a1d393e07e60fe8f69df1e9132c066b691bed00;hp=a16a8091f3a36bc1a0fdc8aac84749c3d0d29693;hb=c844fbf71bf74b1d677c6e6e12e1530cc9b314ce;hpb=a741500ee64cc5009f82d94585ea389e1c5e6613 diff --git a/src/zoom-z3950.c b/src/zoom-z3950.c index a16a809..8a1d393 100644 --- a/src/zoom-z3950.c +++ b/src/zoom-z3950.c @@ -639,8 +639,8 @@ zoom_ret ZOOM_connection_Z3950_send_search(ZOOM_connection c) int lslb, ssub, mspn; const char *syntax; const char *schema; - Z_APDU *apdu = zget_APDU(c->odr_out, Z_APDU_searchRequest); - Z_SearchRequest *search_req = apdu->u.searchRequest; + Z_APDU *apdu; + Z_SearchRequest *search_req; const char *elementSetName; const char *smallSetElementSetName; const char *mediumSetElementSetName; @@ -650,6 +650,11 @@ zoom_ret ZOOM_connection_Z3950_send_search(ZOOM_connection c) assert(c->tasks->which == ZOOM_TASK_SEARCH); r = c->tasks->u.search.resultset; + if (r->live_set) + return send_Z3950_present(c); + + apdu = zget_APDU(c->odr_out, Z_APDU_searchRequest); + search_req = apdu->u.searchRequest; yaz_log(c->log_details, "%p ZOOM_connection_send_search set=%p", c, r); @@ -1273,6 +1278,7 @@ static void handle_Z3950_search_response(ZOOM_connection c, handle_facet_result(c, resultset, sr->additionalSearchInfo); resultset->size = *sr->resultCount; + resultset->live_set = 1; #if HAVE_LIBMEMCACHED_MEMCACHED_H if (c->mc_st) @@ -1346,15 +1352,6 @@ static void handle_Z3950_records(ZOOM_connection c, Z_Records *sr, elementSetName = c->tasks->u.search.elementSetName; schema = c->tasks->u.search.schema; break; - case ZOOM_TASK_RETRIEVE: - resultset = c->tasks->u.retrieve.resultset; - start = &c->tasks->u.retrieve.start; - count = &c->tasks->u.retrieve.count; - syntax = c->tasks->u.retrieve.syntax; - elementSetName = c->tasks->u.retrieve.elementSetName; - schema = c->tasks->u.retrieve.schema; - break; - default: return; } if (sr && sr->which == Z_Records_NSD) @@ -1487,14 +1484,6 @@ zoom_ret send_Z3950_present(ZOOM_connection c) elementSetName = c->tasks->u.search.elementSetName; schema = c->tasks->u.search.schema; break; - case ZOOM_TASK_RETRIEVE: - resultset = c->tasks->u.retrieve.resultset; - start = &c->tasks->u.retrieve.start; - count = &c->tasks->u.retrieve.count; - syntax = c->tasks->u.retrieve.syntax; - elementSetName = c->tasks->u.retrieve.elementSetName; - schema = c->tasks->u.retrieve.schema; - break; default: return zoom_complete; }