summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib/pjsua_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_core.c')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c
index 0bee539d..bc26f62e 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -580,7 +580,7 @@ PJ_DEF(pj_status_t) pjsua_create(void)
pj_caching_pool_init(&pjsua_var.cp, NULL, 0);
/* Create memory pool for application. */
- pjsua_var.pool = pjsua_pool_create("pjsua", 4000, 4000);
+ pjsua_var.pool = pjsua_pool_create("pjsua", 1000, 1000);
PJ_ASSERT_RETURN(pjsua_var.pool, PJ_ENOMEM);
@@ -1069,7 +1069,15 @@ PJ_DEF(pj_status_t) pjsua_destroy(void)
/* Terminate all presence subscriptions. */
pjsua_pres_shutdown();
- /* Unregister, if required: */
+ /* Destroy pool in the buddy object */
+ for (i=0; i<(int)PJ_ARRAY_SIZE(pjsua_var.buddy); ++i) {
+ if (pjsua_var.buddy[i].pool) {
+ pj_pool_release(pjsua_var.buddy[i].pool);
+ pjsua_var.buddy[i].pool = NULL;
+ }
+ }
+
+ /* Destroy accounts */
for (i=0; i<(int)PJ_ARRAY_SIZE(pjsua_var.acc); ++i) {
if (!pjsua_var.acc[i].valid)
continue;
@@ -1077,6 +1085,11 @@ PJ_DEF(pj_status_t) pjsua_destroy(void)
if (pjsua_var.acc[i].regc) {
pjsua_acc_set_registration(i, PJ_FALSE);
}
+
+ if (pjsua_var.acc[i].pool) {
+ pj_pool_release(pjsua_var.acc[i].pool);
+ pjsua_var.acc[i].pool = NULL;
+ }
}
/* Wait for some time to allow unregistration to complete: */