#if HAVE_UNISTD_H
#include <unistd.h>
#endif
+#ifdef WIN32
+#include <windows.h>
+#endif
#include <signal.h>
#include <assert.h>
const char *msg, *addinfo;
ZOOM_record rec = 0;
ZOOM_resultset resultset = cl->resultset;
- int offset = cl->record_offset;
- if ((rec = ZOOM_resultset_record_immediate(resultset, offset)))
+ struct session *se = client_get_session(cl);
+
+ if ((rec = ZOOM_resultset_record_immediate(resultset, cl->record_offset)))
{
- cl->record_offset++;
+ int offset = ++cl->record_offset;
if (cl->session == 0) {
/* no operation */
}
else if (ZOOM_record_error(rec, &msg, &addinfo, 0))
{
- yaz_log(YLOG_WARN, "Record error %s (%s): %s (rec #%d)",
- msg, addinfo, client_get_id(cl), cl->record_offset);
+ session_log(se, YLOG_WARN, "Record error %s (%s): %s #%d",
+ msg, addinfo, client_get_id(cl), offset);
}
else
{
const char *s = session_setting_oneval(sdb, PZ_NATIVESYNTAX);
if (nativesyntax_to_type(s, type, rec))
- yaz_log(YLOG_WARN, "Failed to determine record type");
+ session_log(se, YLOG_WARN, "Failed to determine record type");
xmlrec = ZOOM_record_get(rec, type, NULL);
if (!xmlrec)
- yaz_log(YLOG_WARN, "ZOOM_record_get failed from %s",
- client_get_id(cl));
+ {
+ const char *rec_syn = ZOOM_record_get(rec, "syntax", NULL);
+ session_log(se, YLOG_WARN, "ZOOM_record_get failed from %s #%d",
+ client_get_id(cl), offset);
+ session_log(se, YLOG_LOG, "pz:nativesyntax=%s . "
+ "ZOOM record type=%s . Actual record syntax=%s",
+ s ? s : "null", type,
+ rec_syn ? rec_syn : "null");
+ }
else
{
/* OK = 0, -1 = failure, -2 = Filtered */
int rc = ingest_record(cl, xmlrec, cl->record_offset, nmem);
if (rc == -1)
- yaz_log(YLOG_WARN, "Failed to ingest from %s", client_get_id(cl));
+ {
+ const char *rec_syn = ZOOM_record_get(rec, "syntax", NULL);
+ session_log(se, YLOG_WARN,
+ "Failed to ingest record from %s #%d",
+ client_get_id(cl), offset);
+ session_log(se, YLOG_LOG, "pz:nativesyntax=%s . "
+ "ZOOM record type=%s . Actual record syntax=%s",
+ s ? s : "null", type,
+ rec_syn ? rec_syn : "null");
+ }
if (rc == -2)
cl->filtered += 1;
}
}
else
{
- yaz_log(YLOG_WARN, "Expected record, but got NULL, offset=%d", offset);
+ session_log(se, YLOG_WARN, "Got NULL record from %s #%d",
+ client_get_id(cl), cl->record_offset);
}
}
xfree(c->addinfo);
c->addinfo = 0;
xfree(c->id);
+ xfree(c->sort_strategy);
+ xfree(c->sort_criteria);
assert(!c->connection);
facet_limits_destroy(c->facet_limits);
int client_parse_sort(struct client *cl, struct reclist_sortparms *sp)
{
- struct session *se = client_get_session(cl);
if (sp)
{
const char *sort_strategy_and_spec =
if (!cl->sort_criteria || strcmp(cl->sort_criteria, p))
cl->same_search = 0;
if (cl->same_search == 0) {
- cl->sort_strategy = nmem_strdup(se->nmem, strategy);
- cl->sort_criteria = nmem_strdup(se->nmem, p);
+ xfree(cl->sort_strategy);
+ cl->sort_strategy = xstrdup(strategy);
+ xfree(cl->sort_criteria);
+ cl->sort_criteria = xstrdup(p);
}
}
else {
yaz_log(YLOG_LOG, "Client %s: Invalid sort strategy and spec found %s", client_get_id(cl), sort_strategy_and_spec);
+ xfree(cl->sort_strategy);
cl->sort_strategy = 0;
+ xfree(cl->sort_criteria);
cl->sort_criteria = 0;
}
} else {
- yaz_log(YLOG_LOG, "Client %s: No sort strategy and spec found.", client_get_id(cl));
+ yaz_log(YLOG_DEBUG, "Client %s: No sort strategy and spec found.", client_get_id(cl));
+ xfree(cl->sort_strategy);
cl->sort_strategy = 0;
+ xfree(cl->sort_criteria);
cl->sort_criteria = 0;
}