From: Pekka Riikonen Date: Thu, 7 Dec 2006 17:00:23 +0000 (+0000) Subject: In packet stream destroy, free linked callbacks. X-Git-Tag: silc.client.1.1.beta1~136 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=aa711072e53da43bd4fb8b9d7b4cb6c52d4f12b6 In packet stream destroy, free linked callbacks. --- diff --git a/lib/silccore/silcpacket.c b/lib/silccore/silcpacket.c index e2bf3125..adce3221 100644 --- a/lib/silccore/silcpacket.c +++ b/lib/silccore/silcpacket.c @@ -760,10 +760,20 @@ void silc_packet_stream_destroy(SilcPacketStream stream) silc_buffer_purge(&stream->inbuf); silc_buffer_purge(&stream->outbuf); + if (stream->process) { + SilcPacketProcess p; + silc_dlist_start(stream->process); + while ((p = silc_dlist_get(stream->process))) { + silc_free(p->types); + silc_free(p); + silc_dlist_del(stream->process, p); + } + silc_dlist_uninit(stream->process); + } + /* XXX */ silc_atomic_uninit8(&stream->refcnt); - silc_dlist_uninit(stream->process); silc_mutex_free(stream->lock); silc_free(stream); } @@ -896,6 +906,7 @@ void silc_packet_stream_unlink(SilcPacketStream stream, if (p->callbacks == callbacks && p->callback_context == callback_context) { silc_dlist_del(stream->process, p); + silc_free(p->types); silc_free(p); break; }