yaz_oi_set_string_oid(oi, out, yaz_oid_userinfo_cookie,
1, c->cookie_out);
}
- if (c->client_IP)
+ if (c->client_IP && a->which == Z_APDU_initRequest)
{
Z_OtherInformation **oi;
yaz_oi_APDU(a, &oi);
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);
+ yaz_log(c->log_details, "%p Z3950_send_search set=%p", c, r);
elementSetName = c->tasks->u.search.elementSetName;
smallSetElementSetName =
Z_APDU *apdu = zget_APDU(c->odr_out, Z_APDU_sortRequest);
Z_SortRequest *req = apdu->u.sortRequest;
+ yaz_log(c->log_details, "%p send_Z3950_sort set=%p", c, resultset);
+
req->num_inputResultSetNames = 1;
req->inputResultSetNames = (Z_InternationalString **)
odr_malloc(c->odr_out, sizeof(*req->inputResultSetNames));
const char *elementSetName = c->tasks->u.search.elementSetName;
const char *schema = c->tasks->u.search.schema;
+ yaz_log(c->log_details, "%p Z3950_send_present", c);
+
*req->resultSetStartPoint = c->tasks->u.search.start + 1;
if (resultset->step > 0 && resultset->step < c->tasks->u.search.count)
ZOOM_resultset resultset;
int *start, *count;
- if (!c->tasks)
+ if (!c->tasks || c->tasks->which == ZOOM_TASK_SORT)
return zoom_complete;
assert(c->tasks->which == ZOOM_TASK_SEARCH);
resultset = c->tasks->u.search.resultset;
elementSetName = c->tasks->u.search.elementSetName;
schema = c->tasks->u.search.schema;
- yaz_log(c->log_details, "%p send_present start=%d count=%d",
+ yaz_log(c->log_details, "%p ZOOM_connection_Z3950_search start=%d count=%d",
c, *start, *count);
ZOOM_memcached_search(c, resultset);
if (resultset->live_set)
{
if (*start >= resultset->size)
- return zoom_complete;
- if (*start + *count > resultset->size)
+ *count = 0;
+ else if (*start + *count >= resultset->size)
*count = resultset->size - *start;
}
if (c->error) /* don't continue on error */
return zoom_complete;
- yaz_log(c->log_details, "send_present resultset=%p start=%d count=%d",
- resultset, *start, *count);
for (i = 0; i < *count; i++)
{
case Z_APDU_sortResponse:
yaz_log(c->log_api, "%p handle_Z3950_apdu Sort response", c);
handle_Z3950_sort_response(c, apdu->u.sortResponse);
- ZOOM_connection_remove_task(c);
+ if (ZOOM_connection_Z3950_search(c) == zoom_complete)
+ ZOOM_connection_remove_task(c);
break;
case Z_APDU_scanResponse:
yaz_log(c->log_api, "%p handle_Z3950_apdu Scan response", c);