rtp_engine and stun: call ast_register_atexit instead of ast_register_cleanup

rtp_engine.c and stun.c were calling ast_register_cleanup which
is skipped if any loadable module can't be cleanly unloaded
when asterisk shuts down.  Since this will always be the case,
their cleanup functions never get run.  In a practical sense
this makes no difference since asterisk is shutting down but if
you're in development mode and trying to use the leak sanitizer,
the leaks from both of those modules clutter up the output.
This commit is contained in:
George Joseph
2024-04-02 14:28:35 -06:00
parent b2bcc0cd09
commit 1eec3b6d18
2 changed files with 34 additions and 2 deletions

View File

@@ -576,8 +576,17 @@ static void stun_shutdown(void)
void ast_stun_init(void)
{
ast_cli_register_multiple(cli_stun, sizeof(cli_stun) / sizeof(struct ast_cli_entry));
ast_register_cleanup(stun_shutdown);
debug_category_stun_id = ast_debug_category_register(AST_LOG_CATEGORY_STUN);
debug_category_stun_packet_id = ast_debug_category_register(AST_LOG_CATEGORY_STUN_PACKET);
/*
* Normnally a core module should call ast_register_cleanup
* which doesn't run if any module fails to unload. This
* prevents resources being pulled out from under a running
* module and ppossibly causing a segfault. In this case however,
* the only thing we're cleaning up is the cli command and
* the registers of the debug categories.
*/
ast_register_atexit(stun_shutdown);
}