summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/asterisk/_private.h2
-rw-r--r--main/asterisk.c10
-rw-r--r--main/channel.c8
3 files changed, 14 insertions, 6 deletions
diff --git a/include/asterisk/_private.h b/include/asterisk/_private.h
index ebee96cc4..9255dc1de 100644
--- a/include/asterisk/_private.h
+++ b/include/asterisk/_private.h
@@ -29,7 +29,7 @@ void logger_queue_start(void); /*!< Provided by logger.c */
void clean_time_zones(void); /*!< Provided by localtime.c */
int ast_term_init(void); /*!< Provided by term.c */
int astdb_init(void); /*!< Provided by db.c */
-void ast_channels_init(void); /*!< Provided by channel.c */
+int ast_channels_init(void); /*!< Provided by channel.c */
void ast_builtins_init(void); /*!< Provided by cli.c */
int ast_cli_perms_init(int reload); /*!< Provided by cli.c */
int dnsmgr_init(void); /*!< Provided by dnsmgr.c */
diff --git a/main/asterisk.c b/main/asterisk.c
index 5f631ee5b..772c3dce9 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -4504,7 +4504,10 @@ static void asterisk_daemon(int isroot, const char *runuser, const char *rungrou
exit(1);
}
- aco_init();
+ if (aco_init()) {
+ printf("Failed: aco_init\n%s", term_quit());
+ exit(1);
+ }
if (ast_bucket_init()) {
printf("Failed: ast_bucket_init\n%s", term_quit());
@@ -4598,7 +4601,10 @@ static void asterisk_daemon(int isroot, const char *runuser, const char *rungrou
exit(1);
}
- ast_channels_init();
+ if (ast_channels_init()) {
+ printf("Failed: ast_channels_init\n%s", term_quit());
+ exit(1);
+ }
if (ast_endpoint_init()) {
printf ("Failed: ast_endpoint_init\n%s", term_quit());
diff --git a/main/channel.c b/main/channel.c
index 73f795ffa..853935da3 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -7803,13 +7803,14 @@ static void channels_shutdown(void)
ast_channel_unregister(&surrogate_tech);
}
-void ast_channels_init(void)
+int ast_channels_init(void)
{
channels = ao2_container_alloc(NUM_CHANNEL_BUCKETS,
ast_channel_hash_cb, ast_channel_cmp_cb);
- if (channels) {
- ao2_container_register("channels", channels, prnt_channel_key);
+ if (!channels) {
+ return -1;
}
+ ao2_container_register("channels", channels, prnt_channel_key);
ast_channel_register(&surrogate_tech);
@@ -7823,6 +7824,7 @@ void ast_channels_init(void)
ast_register_cleanup(channels_shutdown);
+ return 0;
}
/*! \brief Print call group and pickup group ---*/