X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fzoom-z3950.c;h=a16a8091f3a36bc1a0fdc8aac84749c3d0d29693;hb=32790840d73b1f4a4bde1478e6b14699aac00e94;hp=fe860505980147f5fe4d7f28f75f3021141cc3e4;hpb=69b1d8e7b437179163fe97b7cbead51a56835f2a;p=yaz-moved-to-github.git diff --git a/src/zoom-z3950.c b/src/zoom-z3950.c index fe86050..a16a809 100644 --- a/src/zoom-z3950.c +++ b/src/zoom-z3950.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2013 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ /** @@ -670,8 +670,7 @@ zoom_ret ZOOM_connection_Z3950_send_search(ZOOM_connection c) if (facets) { Z_FacetList *facet_list = yaz_pqf_parse_facet_list(c->odr_out, facets); if (facet_list) { - Z_OtherInformation **oi; - yaz_oi_APDU(apdu, &oi); + Z_OtherInformation **oi = &search_req->additionalSearchInfo; yaz_oi_set_facetlist(oi, c->odr_out, facet_list); } else @@ -779,15 +778,6 @@ zoom_ret ZOOM_connection_Z3950_send_search(ZOOM_connection c) result sets on the server. */ for (ord = 1; ; ord++) { -#if ZOOM_RESULT_LISTS - ZOOM_resultsets rsp; - sprintf(setname, "%d", ord); - for (rsp = c->resultsets; rsp; rsp = rsp->next) - if (rsp->resultset->setname && !strcmp(rsp->resultset->setname, setname)) - break; - if (!rsp) - break; -#else ZOOM_resultset rp; sprintf(setname, "%d", ord); for (rp = c->resultsets; rp; rp = rp->next) @@ -795,8 +785,6 @@ zoom_ret ZOOM_connection_Z3950_send_search(ZOOM_connection c) break; if (!rp) break; -#endif - } r->setname = xstrdup(setname); yaz_log(c->log_details, "%p ZOOM_connection_send_search: " @@ -1285,6 +1273,24 @@ static void handle_Z3950_search_response(ZOOM_connection c, handle_facet_result(c, resultset, sr->additionalSearchInfo); resultset->size = *sr->resultCount; + +#if HAVE_LIBMEMCACHED_MEMCACHED_H + if (c->mc_st) + { + uint32_t flags = 0; + memcached_return_t rc; + time_t expiration = 36000; + char str[40]; + + sprintf(str, ODR_INT_PRINTF, *sr->resultCount); + rc = memcached_set(c->mc_st, + wrbuf_buf(resultset->mc_key),wrbuf_len(resultset->mc_key), + str, strlen(str), expiration, flags); + yaz_log(YLOG_LOG, "Key=%s value=%s rc=%u %s", + wrbuf_cstr(resultset->mc_key), str, (unsigned) rc, + memcached_last_error_message(c->mc_st)); + } +#endif handle_Z3950_records(c, sr->records, 0); } @@ -1398,6 +1404,7 @@ static void handle_Z3950_records(ZOOM_connection c, Z_Records *sr, "ZOOM C generated. Present phase and no records"); ZOOM_record_cache_add(resultset, myrec, *start, syntax, elementSetName, schema, 0); + *count = 0; } } else if (present_phase) @@ -1410,6 +1417,7 @@ static void handle_Z3950_records(ZOOM_connection c, Z_Records *sr, "ZOOM C generated: Present response and no records"); ZOOM_record_cache_add(resultset, myrec, *start, syntax, elementSetName, schema, 0); + *count = 0; } } }