* Copyright (c) 1995-2003, Index Data
* See the file LICENSE for details.
*
- * $Id: seshigh.c,v 1.162 2003-10-20 18:20:55 adam Exp $
+ * $Id: seshigh.c,v 1.164 2003-10-21 09:48:23 adam Exp $
*/
/*
void destroy_association(association *h)
{
statserv_options_block *cb = statserv_getcontrol();
+ request *req;
xfree(h->init);
odr_destroy(h->decode);
xfree(h->input_buffer);
if (h->backend)
(*cb->bend_close)(h->backend);
- while (request_deq(&h->incoming));
- while (request_deq(&h->outgoing));
+ while ((req = request_deq(&h->incoming)))
+ request_release(req);
+ while ((req = request_deq(&h->outgoing)))
+ request_release(req);
request_delq(&h->incoming);
request_delq(&h->outgoing);
xfree(h);
}
else
{
+ request_release(req);
yaz_log(LOG_DEBUG, "v2 client. No Close PDU");
iochan_setevent(a->client_chan, EVENT_TIMEOUT); /* force imm close */
}
static void do_close(association *a, int reason, char *message)
{
request *req = request_get(&a->outgoing);
- request_release(req);
do_close_req (a, reason, message, req);
}
}
if (!z_GDU(assoc->encode, &res, 0, 0))
{
- yaz_log(LOG_WARN, "ODR error when decoding PDU: %s [element %s]",
+ yaz_log(LOG_WARN, "ODR error when encoding PDU: %s [element %s]",
odr_errmsg(odr_geterror(assoc->decode)),
odr_getelement(assoc->decode));
+ request_release(req);
return -1;
}
req->response = odr_getbuf(assoc->encode, &req->len_response,