auth->u.open = odr_strdup(c->odr_out, c->user);
ireq->idAuthentication = auth;
}
- if (c->proxy)
+ if (c->proxy_mode)
{
yaz_oi_set_string_oid(&ireq->otherInfo, c->odr_out,
yaz_oid_userinfo_proxy, 1, c->host_port);
static void handle_Z3950_sort_response(ZOOM_connection c, Z_SortResponse *res)
{
if (res->diagnostics && res->num_diagnostics > 0)
+ {
response_diag(c, res->diagnostics[0]);
+ ZOOM_connection_remove_tasks(c);
+ }
}
static void handle_Z3950_scan_response(ZOOM_connection c, Z_ScanResponse *res)
schema = c->tasks->u.search.schema;
if (sr && sr->which == Z_Records_NSD)
+ {
response_default_diag(c, sr->u.nonSurrogateDiagnostic);
+ ZOOM_connection_remove_tasks(c);
+ }
else if (sr && sr->which == Z_Records_multipleNSD)
{
if (sr->u.multipleNonSurDiagnostics->num_diagRecs >= 1)
response_diag(c, sr->u.multipleNonSurDiagnostics->diagRecs[0]);
else
ZOOM_set_error(c, ZOOM_ERROR_DECODE, 0);
+ ZOOM_connection_remove_tasks(c);
}
else
{
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;
if (resultset->live_set)
{
- if (*start + *count > resultset->size)
- ZOOM_set_dset_error(c, YAZ_BIB1_PRESENT_REQUEST_OUT_OF_RANGE, "Bib-1",
- 0, 0);
+ if (*start >= resultset->size)
+ *count = 0;
+ else if (*start + *count >= resultset->size)
+ *count = resultset->size - *start;
}
if (c->error) /* don't continue on error */