* Copyright (c) 1995-2003, Index Data
* See the file LICENSE for details.
*
- * $Id: seshigh.c,v 1.161 2003-09-09 16:03:46 mike 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)
{
- do_close_req (a, reason, message, request_get(&a->outgoing));
+ request *req = request_get(&a->outgoing);
+ do_close_req (a, reason, message, req);
}
/*
{
yaz_log(LOG_LOG, "PDU dump:");
odr_dumpBER(yaz_log_file(), assoc->input_buffer, res);
- do_close(assoc, Z_Close_protocolError, "Malformed package");
+ request_release(req);
+ do_close(assoc, Z_Close_protocolError,"Malformed package");
}
else
{
}
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,