diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2014-06-19 08:06:50 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2014-06-19 08:06:50 +0000 |
commit | f0d0ddae6055d905cb55b6aebe17f073c52cb383 (patch) | |
tree | 97df73f48143510537c31f6e6f8475fa393ae88d | |
parent | 727da5e28aa110f7931b696f1b1ba74e805bb9b4 (diff) |
Close #1772: Fixed error handling in pjsua_create() and pjsua_init().
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4861 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_core.c | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index f76bc5e7..1d5eae7c 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -797,11 +797,21 @@ PJ_DEF(pj_status_t) pjsua_create(void) /* Init PJLIB-UTIL: */ status = pjlib_util_init(); - PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); + if (status != PJ_SUCCESS) { + pj_log_pop_indent(); + pjsua_perror(THIS_FILE, "Failed in initializing pjlib-util", status); + pj_shutdown(); + return status; + } /* Init PJNATH */ status = pjnath_init(); - PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); + if (status != PJ_SUCCESS) { + pj_log_pop_indent(); + pjsua_perror(THIS_FILE, "Failed in initializing pjnath", status); + pj_shutdown(); + return status; + } /* Set default sound device ID */ pjsua_var.cap_dev = PJMEDIA_AUD_DEFAULT_CAPTURE_DEV; @@ -816,15 +826,21 @@ PJ_DEF(pj_status_t) pjsua_create(void) /* Create memory pool for application. */ pjsua_var.pool = pjsua_pool_create("pjsua", 1000, 1000); + if (pjsua_var.pool == NULL) { + pj_log_pop_indent(); + status = PJ_ENOMEM; + pjsua_perror(THIS_FILE, "Unable to create pjsua pool", status); + pj_shutdown(); + return status; + } - PJ_ASSERT_RETURN(pjsua_var.pool, PJ_ENOMEM); - /* Create mutex */ status = pj_mutex_create_recursive(pjsua_var.pool, "pjsua", &pjsua_var.mutex); if (status != PJ_SUCCESS) { pj_log_pop_indent(); pjsua_perror(THIS_FILE, "Unable to create mutex", status); + pjsua_destroy(); return status; } @@ -834,7 +850,12 @@ PJ_DEF(pj_status_t) pjsua_create(void) status = pjsip_endpt_create(&pjsua_var.cp.factory, pj_gethostname()->ptr, &pjsua_var.endpt); - PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); + if (status != PJ_SUCCESS) { + pj_log_pop_indent(); + pjsua_perror(THIS_FILE, "Unable to create endpoint", status); + pjsua_destroy(); + return status; + } /* Init timer entry list */ pj_list_init(&pjsua_var.timer_list); @@ -845,6 +866,7 @@ PJ_DEF(pj_status_t) pjsua_create(void) if (status != PJ_SUCCESS) { pj_log_pop_indent(); pjsua_perror(THIS_FILE, "Unable to create mutex", status); + pjsua_destroy(); return status; } @@ -1125,7 +1147,6 @@ PJ_DEF(pj_status_t) pjsua_init( const pjsua_config *ua_cfg, return PJ_SUCCESS; on_error: - pjsua_destroy(); pj_log_pop_indent(); return status; } |