diff options
author | Corey Farrell <git@cfware.com> | 2015-05-01 14:22:03 -0400 |
---|---|---|
committer | Corey Farrell <git@cfware.com> | 2015-05-01 15:40:45 -0400 |
commit | 5875bf183c255f19ededdb1004f35fd15cd1e6cf (patch) | |
tree | 31ad8c8b70393de7f826f634795c339056c98192 | |
parent | ec0f80b6e8d5f6952bdf48e8f19a024ebc64840e (diff) |
Astobj2: Fix initialization order of refdebug and AO2_DEBUG.
This ensures that refdebug is initialized before AO2_DEBUG if
both are enabled, since AO2_DEBUG allocates a container.
This change also makes AO2_DEBUG initialization critical, a
failure will abort Asterisk startup. This is needed since
the failure would be caused by reg_containers allocation
failure, and that would result in a segmentation fault by
ao2_container_register later in startup.
ASTERISK-25048 #close
Reported by: Corey Farrell
Change-Id: I9a243ea3fc5653b48b931ba6d61971cb2e530244
-rw-r--r-- | main/asterisk.c | 5 | ||||
-rw-r--r-- | main/astobj2.c | 11 |
2 files changed, 9 insertions, 7 deletions
diff --git a/main/asterisk.c b/main/asterisk.c index 2b70a99b0..137ee9315 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -4353,7 +4353,10 @@ int main(int argc, char *argv[]) register_config_cli(); read_config_maps(); - astobj2_init(); + if (astobj2_init()) { + printf("Failed: astobj2_init\n%s", term_quit()); + exit(1); + } if (ast_opt_console) { if (el_hist == NULL || el == NULL) diff --git a/main/astobj2.c b/main/astobj2.c index f1d500174..1bb5237f1 100644 --- a/main/astobj2.c +++ b/main/astobj2.c @@ -899,13 +899,7 @@ int astobj2_init(void) { #ifdef REF_DEBUG char ref_filename[1024]; -#endif - - if (container_init() != 0) { - return -1; - } -#ifdef REF_DEBUG snprintf(ref_filename, sizeof(ref_filename), "%s/refs", ast_config_AST_LOG_DIR); ref_log = fopen(ref_filename, "w"); if (!ref_log) { @@ -913,6 +907,11 @@ int astobj2_init(void) } #endif + if (container_init() != 0) { + fclose(ref_log); + return -1; + } + #if defined(AO2_DEBUG) ast_cli_register_multiple(cli_astobj2, ARRAY_LEN(cli_astobj2)); #endif /* defined(AO2_DEBUG) */ |