Clean up documentation; prevent ref leak on exit

This patch:
 * Cleans up some doxygen
 * Prevents leaking the system level Stasis topics and messages
   on exit (users of valgrind will be happier)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@387633 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Matthew Jordan
2013-05-04 16:00:46 +00:00
parent b3bb6608ef
commit 6e2fe0c9ab
2 changed files with 53 additions and 32 deletions

View File

@@ -417,6 +417,12 @@ struct file_version {
char *version;
};
/*! \brief The \ref stasis topic for system level changes */
static struct stasis_topic *system_topic;
/*!\ brief The \ref stasis_message_type for network changes */
static struct stasis_message_type *network_change_type;
static AST_RWLIST_HEAD_STATIC(file_versions, file_version);
void ast_register_file_version(const char *file, const char *version)
@@ -536,6 +542,42 @@ void ast_unregister_thread(void *id)
}
}
struct stasis_topic *ast_system_topic(void)
{
return system_topic;
}
struct stasis_message_type *ast_network_change_type(void)
{
return network_change_type;
}
/*! \brief Cleanup the \ref stasis system level items */
static void stasis_system_topic_cleanup(void)
{
ao2_ref(system_topic, -1);
system_topic = NULL;
ao2_ref(network_change_type, -1);
network_change_type = NULL;
}
/*! \brief Initialize the system level items for \ref stasis */
static int stasis_system_topic_init(void)
{
ast_register_atexit(stasis_system_topic_cleanup);
system_topic = stasis_topic_create("ast_system");
if (!system_topic) {
return 1;
}
network_change_type = stasis_message_type_create("network_change");
if (!network_change_type) {
return -1;
}
return 0;
}
/*! \brief Give an overview of core settings */
static char *handle_show_settings(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
@@ -3560,26 +3602,6 @@ static void env_init(void)
setenv("AST_VERSION", ast_get_version(), 1);
}
static struct stasis_topic *system_topic;
static struct stasis_message_type *network_change_type;
struct stasis_topic *ast_system_topic(void)
{
return system_topic;
}
struct stasis_message_type *ast_network_change_type(void)
{
return network_change_type;
}
static void stasis_system_topic_init(void)
{
system_topic = stasis_topic_create("ast_system");
network_change_type = stasis_message_type_create("network_change");
}
static void print_intro_message(const char *runuser, const char *rungroup)
{
if (ast_opt_console || option_verbose || (ast_opt_remote && !ast_opt_exec)) {
@@ -4147,7 +4169,10 @@ int main(int argc, char *argv[])
printf("Stasis initialization failed.\n%s", term_quit());
exit(1);
}
stasis_system_topic_init();
if (stasis_system_topic_init()) {
printf("Stasis system-level information initialization failed.\n%s", term_quit());
exit(1);
}
ast_makesocket();
sigemptyset(&sigs);