return clients;
}
-int clients_count(void)
+int clients_get_count(void)
{
return client_use(0);
}
const char *str;
int extend_recs = 0;
int number = cl->hits - cl->record_offset;
+ struct connection *co = client_get_connection(cl);
str = session_setting_oneval(sdb, PZ_EXTENDRECS);
if (!str || !*str)
extend_recs = atoi(str);
- yaz_log(YLOG_LOG, "cl=%s show_stat_no=%d got=%d",
+ yaz_log(YLOG_DEBUG, "cl=%s show_stat_no=%d got=%d",
client_get_id(cl), cl->show_stat_no, cl->record_offset);
if (cl->show_stat_no < cl->record_offset)
return 0;
- yaz_log(YLOG_LOG, "cl=%s Trying to fetch more", client_get_id(cl));
+ yaz_log(YLOG_DEBUG, "cl=%s Trying to fetch more", client_get_id(cl));
if (number > extend_recs)
number = extend_recs;
- if (number > 0)
+ if (number <= 0)
+ yaz_log(YLOG_DEBUG, "cl=%s. OK no more in total set", client_get_id(cl));
+ else if (!co)
+ yaz_log(YLOG_DEBUG, "cl=%s. No connection", client_get_id(cl));
+ else
{
ZOOM_resultset set = cl->resultset;
- struct connection *co = client_get_connection(cl);
str = session_setting_oneval(sdb, PZ_REQUESTSYNTAX);
ZOOM_resultset_option_set(set, "preferredRecordSyntax", str);
connection_continue(co);
return 1;
}
- else
- {
- yaz_log(YLOG_LOG, "cl=%s. OK no more in total set", client_get_id(cl));
- }
return 0;
}
}
else if (!rc_prep_connection)
{
- session_log(se, YLOG_LOG, "%s: postponing search: No connection",
- client_get_id(cl));
- client_set_state_nb(cl, Client_Working);
+ client_set_diagnostic(cl, 2,
+ ZOOM_diag_str(2),
+ "Cannot create connection");
+ client_set_state_nb(cl, Client_Error);
return -1;
}
co = client_get_connection(cl);
link = connection_get_link(co);
assert(link);
- session_log(se, YLOG_LOG, "%s: new search", client_get_id(cl));
-
client_destroy_xdoc(cl);
client_init_xdoc(cl);
client_set_connection(cl, 0);
}
+void client_mark_dead(struct client *cl)
+{
+ if (cl->connection)
+ connection_mark_dead(cl->connection);
+}
+
void client_stop(struct client *cl)
{
client_lock(cl);
cl, name,
values[i]);
if (id)
- values[i] = nmem_strdup(nmem_tmp, id);
+ {
+ if ( *id )
+ {
+ values[i] = nmem_strdup(nmem_tmp, id);
+ yaz_log(YLOG_DEBUG,
+ "apply_limit: s='%s' found id '%s'",s->name,id );
+ }
+ else
+ {
+ yaz_log(YLOG_DEBUG,
+ "apply_limit: %s: term '%s' not found, failing client",
+ s->name, values[i] );
+ ret = -1;
+ }
+ }
}
nmem_strsplit_escape2(nmem_tmp, ",", s->value, &cvalues,
&cnum, 1, '\\', 1);
if (!ccl_map)
return -3;
+ xfree(cl->cqlquery);
+ cl->cqlquery = 0;
+
w_ccl = wrbuf_alloc();
wrbuf_puts(w_ccl, query);
if (apply_limit(cl, facet_limits, w_pqf, ccl_map, service))
{
+ client_set_state(cl, Client_Error);
ccl_qual_rm(&ccl_map);
+
+ wrbuf_destroy(w_ccl);
+ wrbuf_destroy(w_pqf);
+
+ xfree(cl->pquery);
+ cl->pquery = 0;
+
return -2;
}
facet_limits_destroy(cl->facet_limits);
cl->facet_limits = facet_limits_dup(facet_limits);
- yaz_log(YLOG_LOG, "Client %s: CCL query: %s limit: %s",
- client_get_id(cl), wrbuf_cstr(w_ccl), wrbuf_cstr(w_pqf));
cn = ccl_find_str(ccl_map, wrbuf_cstr(w_ccl), &cerror, &cpos);
ccl_qual_rm(&ccl_map);
if (!cn)
wrbuf_cstr(w_ccl));
wrbuf_destroy(w_ccl);
wrbuf_destroy(w_pqf);
+
+ xfree(cl->pquery);
+ cl->pquery = 0;
+
return -1;
}
wrbuf_destroy(w_ccl);
}
wrbuf_destroy(w_pqf);
- xfree(cl->cqlquery);
- cl->cqlquery = 0;
-
odr_out = odr_createmem(ODR_ENCODE);
zquery = p_query_rpn(odr_out, cl->pquery);
if (!zquery)
{
-
session_log(se, YLOG_WARN, "Invalid PQF query for Client %s: %s",
client_get_id(cl), cl->pquery);
ret_value = -1;
}
else
{
- session_log(se, YLOG_LOG, "PQF for Client %s: %s",
- client_get_id(cl), cl->pquery);
-
/* Support for PQF on SRU targets. */
if (strcmp(query_syntax, "pqf") != 0 && *sru)
{