From 122dec4c773568986c788f805dafaceb4f989eb3 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Thu, 4 Mar 2021 12:15:36 -0500 Subject: [PATCH] TT#14008 shut down DTX buffer when resetting codec handler closes #1203 Change-Id: Ibc8cc89c8fe152a9dc3172d24d3c27b75463d9bd (cherry picked from commit 1393dbfc9ae0a2fdc3fe25229e2b69b05c5fe959) --- daemon/codec.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/daemon/codec.c b/daemon/codec.c index ea6514eb0..022266bb8 100644 --- a/daemon/codec.c +++ b/daemon/codec.c @@ -170,6 +170,7 @@ static codec_handler_func handler_func_t38; static struct ssrc_entry *__ssrc_handler_transcode_new(void *p); static struct ssrc_entry *__ssrc_handler_new(void *p); +static void __ssrc_handler_stop(void *p); static void __free_ssrc_handler(void *); static void __transcode_packet_free(struct transcode_packet *); @@ -197,7 +198,10 @@ static struct codec_handler codec_handler_stub_ssrc = { static void __handler_shutdown(struct codec_handler *handler) { - free_ssrc_hash(&handler->ssrc_hash); + if (handler->ssrc_hash) { + ssrc_hash_foreach(handler->ssrc_hash, __ssrc_handler_stop); + free_ssrc_hash(&handler->ssrc_hash); + } if (handler->ssrc_handler) obj_put(&handler->ssrc_handler->h); handler->ssrc_handler = NULL; @@ -2522,7 +2526,7 @@ static void __dtx_setup(struct codec_ssrc_handler *ch) { dtx->ptime = 20; // XXX ? dtx->tspp = dtx->ptime * ch->handler->source_pt.clock_rate / 1000; } -void __ssrc_handler_stop(void *p) { +static void __ssrc_handler_stop(void *p) { struct codec_ssrc_handler *ch = p; if (ch->dtx_buffer) { mutex_lock(&ch->dtx_buffer->lock);