From aa711072e53da43bd4fb8b9d7b4cb6c52d4f12b6 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Thu, 7 Dec 2006 17:00:23 +0000 Subject: [PATCH] In packet stream destroy, free linked callbacks. --- lib/silccore/silcpacket.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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; } -- 2.43.0