X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=zutil%2Fzoom-c.c;h=b2bfeead25db6378203bc144bd2d8c1d522cdd57;hb=bc9920b48da91d87e1c0e033a9151663998d6b6b;hp=377c2b501378c5af65e26d6833dd57bcfd9bfd0a;hpb=15715e1bb3a298a1894d2b680f5b132506313692;p=yaz-moved-to-github.git diff --git a/zutil/zoom-c.c b/zutil/zoom-c.c index 377c2b5..b2bfeea 100644 --- a/zutil/zoom-c.c +++ b/zutil/zoom-c.c @@ -2,7 +2,7 @@ * Copyright (c) 2000-2003, Index Data * See the file LICENSE for details. * - * $Id: zoom-c.c,v 1.31 2003-04-23 20:38:19 adam Exp $ + * $Id: zoom-c.c,v 1.33 2003-04-29 21:20:34 adam Exp $ * * ZOOM layer for C, connections, result sets, queries. */ @@ -106,11 +106,13 @@ static void set_dset_error (ZOOM_connection c, int error, addinfo2 ? addinfo2 : ""); } +#if HAVE_XML2 static void set_HTTP_error (ZOOM_connection c, int error, const char *addinfo, const char *addinfo2) { set_dset_error(c, error, "HTTP", addinfo, addinfo2); } +#endif static void set_ZOOM_error (ZOOM_connection c, int error, const char *addinfo) @@ -172,6 +174,7 @@ void ZOOM_connection_remove_task (ZOOM_connection c) switch (task->which) { case ZOOM_TASK_SEARCH: + ZOOM_resultset_destroy (task->u.search.resultset); break; case ZOOM_TASK_RETRIEVE: @@ -1307,8 +1310,14 @@ ZOOM_resultset_record_immediate (ZOOM_resultset s,size_t pos) ZOOM_API(ZOOM_record) ZOOM_resultset_record (ZOOM_resultset r, size_t pos) { - ZOOM_resultset_retrieve (r, 1, pos, 1); - return ZOOM_resultset_record_immediate (r, pos); + ZOOM_record rec = ZOOM_resultset_record_immediate(r, pos); + + if (!rec) + { + ZOOM_resultset_retrieve (r, 1, pos, 1); + rec = ZOOM_resultset_record_immediate (r, pos); + } + return rec; } ZOOM_API(void) @@ -1526,6 +1535,9 @@ static void record_cache_add (ZOOM_resultset r, Z_NamePlusRecord *npr, const char *syntax = ZOOM_resultset_option_get (r, "preferredRecordSyntax"); + ZOOM_Event event = ZOOM_Event_create(ZOOM_EVENT_RECV_RECORD); + ZOOM_connection_put_event(r->connection, event); + for (rc = r->record_cache; rc; rc = rc->next) { if (pos == rc->pos) @@ -1665,11 +1677,15 @@ static void handle_present_response (ZOOM_connection c, Z_PresentResponse *pr) static void handle_search_response (ZOOM_connection c, Z_SearchResponse *sr) { ZOOM_resultset resultset; - + ZOOM_Event event; + yaz_log (LOG_DEBUG, "got search response"); - + if (!c->tasks || c->tasks->which != ZOOM_TASK_SEARCH) return ; + + event = ZOOM_Event_create(ZOOM_EVENT_RECV_SEARCH); + ZOOM_connection_put_event(c, event); resultset = c->tasks->u.search.resultset; @@ -2449,6 +2465,7 @@ static void handle_srw_response(ZOOM_connection c, ZOOM_resultset resultset = 0; int i; NMEM nmem; + ZOOM_Event event; if (!c->tasks) return; @@ -2460,6 +2477,9 @@ static void handle_srw_response(ZOOM_connection c, else return ; + event = ZOOM_Event_create(ZOOM_EVENT_RECV_SEARCH); + ZOOM_connection_put_event(c, event); + resultset->size = 0; yaz_log(LOG_DEBUG, "got SRW response OK");