* Copyright (C) 1995-2007, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: zoom-c.c,v 1.111 2007-02-07 17:52:44 mike Exp $
+ * $Id: zoom-c.c,v 1.114 2007-02-21 12:53:01 adam Exp $
*/
/**
* \file zoom-c.c
#include <yaz/cql.h>
#include <yaz/ccl.h>
+#define TASK_FIX 1
+
static int log_api = 0;
static int log_details = 0;
return event;
}
+static void ZOOM_connection_remove_events(ZOOM_connection c)
+{
+ ZOOM_Event event;
+ while ((event = ZOOM_connection_get_event(c)))
+ ZOOM_Event_destroy(event);
+}
+
ZOOM_API(int) ZOOM_connection_peek_event(ZOOM_connection c)
{
ZOOM_Event event = c->m_queue_front;
return event ? event->kind : ZOOM_EVENT_NONE;
}
+void ZOOM_connection_remove_tasks(ZOOM_connection c);
+
static void set_dset_error(ZOOM_connection c, int error,
const char *dset,
const char *addinfo, const char *addinfo2)
}
else if (addinfo)
c->addinfo = xstrdup(addinfo);
- if (error)
+ if (error != ZOOM_ERROR_NONE)
+ {
yaz_log(log_api, "%p set_dset_error %s %s:%d %s %s",
c, c->host_port ? c->host_port : "<>", dset, error,
addinfo ? addinfo : "",
addinfo2 ? addinfo2 : "");
+#if TASK_FIX
+ ZOOM_connection_remove_tasks(c);
+#endif
+ }
}
#if YAZ_HAVE_XML2
}
#endif
+
static void set_ZOOM_error(ZOOM_connection c, int error,
const char *addinfo)
{
* or Init Refused are not cleared, because they are not
* recoverable: doing another search doesn't help.
*/
+
+ ZOOM_connection_remove_events(c);
switch (c->error)
{
case ZOOM_ERROR_CONNECT:
odr_destroy(c->odr_out);
ZOOM_options_destroy(c->options);
ZOOM_connection_remove_tasks(c);
+ ZOOM_connection_remove_events(c);
xfree(c->host_port);
xfree(c->path);
xfree(c->proxy);
odr_prepend(c->odr_out, "ZOOM-C",
ireq->implementationName));
- version = odr_strdup(c->odr_out, "$Revision: 1.111 $");
+ version = odr_strdup(c->odr_out, "$Revision: 1.114 $");
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
ireq->implementationVersion =