diff options
Diffstat (limited to 'main/message.c')
-rw-r--r-- | main/message.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/main/message.c b/main/message.c index 1ac9231e3..26fea1aca 100644 --- a/main/message.c +++ b/main/message.c @@ -756,7 +756,18 @@ static void chan_cleanup(struct ast_channel *chan) ast_channel_unlock(chan); } -AST_THREADSTORAGE(msg_q_chan); +static void destroy_msg_q_chan(void *data) +{ + struct ast_channel **chan = data; + + if (!*chan) { + return; + } + + ast_channel_release(*chan); +} + +AST_THREADSTORAGE_CUSTOM(msg_q_chan, NULL, destroy_msg_q_chan); /*! * \internal @@ -1318,3 +1329,8 @@ int ast_msg_init(void) return res; } + +void ast_msg_shutdown(void) +{ + msg_q_tp = ast_taskprocessor_unreference(msg_q_tp); +} |