#include <yaz/timing.h>
#endif
-#include "pazpar2.h"
+#include "session.h"
#include "parameters.h"
#include "client.h"
#include "connection.h"
"Client_Disconnected"
};
-static struct client *client_freelist = 0; /* thread pr */
-
const char *client_get_state_str(struct client *cl)
{
return client_states[cl->state];
else
{
struct session_database *sdb = client_get_database(cl);
+ NMEM nmem = nmem_create();
const char *xmlrec;
char type[80];
if (nativesyntax_to_type(sdb, type, rec))
yaz_log(YLOG_WARN, "Failed to determine record type");
if ((xmlrec = ZOOM_record_get(rec, type, NULL)))
{
- if (ingest_record(cl, xmlrec, cl->record_offset))
+ if (!ingest_record(cl, xmlrec, cl->record_offset, nmem))
{
session_alert_watch(cl->session, SESSION_WATCH_SHOW);
session_alert_watch(cl->session, SESSION_WATCH_RECORD);
}
else
yaz_log(YLOG_WARN, "Failed to extract ZOOM record");
+ nmem_destroy(nmem);
}
}
struct client *client_create(void)
{
- struct client *r;
- if (client_freelist)
- {
- r = client_freelist;
- client_freelist = client_freelist->next;
- }
- else
- r = xmalloc(sizeof(struct client));
+ struct client *r = xmalloc(sizeof(*r));
r->maxrecs = 100;
r->startrecs = 0;
r->pquery = 0;
connection_release(c->connection);
ZOOM_resultset_destroy(c->resultset);
- c->resultset = 0;
- c->next = client_freelist;
- client_freelist = c;
+ xfree(c);
}
void client_set_connection(struct client *cl, struct connection *con)