int maxrecs;
int startrecs;
int diagnostic;
+ char *message;
int preferred;
struct suggestions *suggestions;
enum client_state state;
cl->pquery = 0;
cl->cqlquery = 0;
cl->addinfo = 0;
+ cl->message = 0;
cl->database = 0;
cl->connection = 0;
cl->session = 0;
c->cqlquery = 0;
xfree(c->addinfo);
c->addinfo = 0;
+ xfree(c->message);
+ c->message = 0;
xfree(c->id);
xfree(c->sort_strategy);
xfree(c->sort_criteria);
WRBUF w = wrbuf_alloc();
wrbuf_printf(w, "Malformed cclmap. name=%s", s->name);
yaz_log(YLOG_WARN, "%s: %s", client_get_id(cl), wrbuf_cstr(w));
- client_set_diagnostic(cl, ZOOM_ERROR_CCL_CONFIG, wrbuf_cstr(w));
+ client_set_diagnostic(cl, ZOOM_ERROR_CCL_CONFIG,
+ ZOOM_diag_str(ZOOM_ERROR_CCL_CONFIG),
+ wrbuf_cstr(w));
client_set_state_nb(cl, Client_Error);
ccl_qual_rm(&res);
wrbuf_destroy(w);
wrbuf_printf(w, "Malformed cclmap. name=%s: value=%s (%s)",
s->name, p, addinfo);
yaz_log(YLOG_WARN, "%s: %s", client_get_id(cl), wrbuf_cstr(w));
- client_set_diagnostic(cl, ZOOM_ERROR_CCL_CONFIG, wrbuf_cstr(w));
+ client_set_diagnostic(cl, ZOOM_ERROR_CCL_CONFIG,
+ ZOOM_diag_str(ZOOM_ERROR_CCL_CONFIG),
+ wrbuf_cstr(w));
client_set_state_nb(cl, Client_Error);
ccl_qual_rm(&res);
wrbuf_destroy(w);
}
void client_set_diagnostic(struct client *cl, int diagnostic,
- const char *addinfo)
+ const char *message, const char *addinfo)
{
cl->diagnostic = diagnostic;
+ xfree(cl->message);
+ cl->message = xstrdup(message);
xfree(cl->addinfo);
cl->addinfo = 0;
if (addinfo)
cl->addinfo = xstrdup(addinfo);
}
-int client_get_diagnostic(struct client *cl, const char **addinfo)
+int client_get_diagnostic(struct client *cl, const char **message,
+ const char **addinfo)
{
+ if (message)
+ *message = cl->message;
if (addinfo)
*addinfo = cl->addinfo;
return cl->diagnostic;