summaryrefslogtreecommitdiff
path: root/pjsip/src
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-11-21 12:39:31 +0000
committerBenny Prijono <bennylp@teluu.com>2006-11-21 12:39:31 +0000
commit271cf23083b38b3f0d12a36bb1f28e458ee43861 (patch)
treed3c5bc170635051fd0aaa3fa41ba26fc421693f1 /pjsip/src
parentc0cd0b4450fdcf785bb9184b4d6231d452cb8df5 (diff)
Fixed handles leak upon program exit, by introducing pj_shutdown() and pj_atexit(). Also fixed handle leaks in SIP transaction layer and SIP endpoint.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@815 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src')
-rw-r--r--pjsip/src/pjsip/sip_endpoint.c3
-rw-r--r--pjsip/src/pjsip/sip_transaction.c3
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c3
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c3
4 files changed, 12 insertions, 0 deletions
diff --git a/pjsip/src/pjsip/sip_endpoint.c b/pjsip/src/pjsip/sip_endpoint.c
index 2d61e6b9..5586d305 100644
--- a/pjsip/src/pjsip/sip_endpoint.c
+++ b/pjsip/src/pjsip/sip_endpoint.c
@@ -581,6 +581,9 @@ PJ_DEF(void) pjsip_endpt_destroy(pjsip_endpoint *endpt)
/* Delete endpoint mutex. */
pj_mutex_destroy(endpt->mutex);
+ /* Delete module's mutex */
+ pj_rwmutex_destroy(endpt->mod_mutex);
+
/* Finally destroy pool. */
pj_pool_release(endpt->pool);
diff --git a/pjsip/src/pjsip/sip_transaction.c b/pjsip/src/pjsip/sip_transaction.c
index faa9b2fe..af742b6f 100644
--- a/pjsip/src/pjsip/sip_transaction.c
+++ b/pjsip/src/pjsip/sip_transaction.c
@@ -674,6 +674,9 @@ static pj_status_t mod_tsx_layer_unload(void)
/* Release pool. */
pjsip_endpt_release_pool(mod_tsx_layer.endpt, mod_tsx_layer.pool);
+ /* Free TLS */
+ pj_thread_local_free(pjsip_tsx_lock_tls_id);
+
/* Mark as unregistered. */
mod_tsx_layer.endpt = NULL;
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c
index 000d469f..7d9fa3b8 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -707,6 +707,9 @@ PJ_DEF(pj_status_t) pjsua_destroy(void)
pjsua_var.log_file = NULL;
}
+ /* Shutdown PJLIB */
+ pj_shutdown();
+
/* Done. */
return PJ_SUCCESS;
}
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index b040ff84..2a8146c4 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -474,6 +474,9 @@ pj_status_t pjsua_media_subsys_destroy(void)
pjsua_var.med_endpt = NULL;
}
+ /* Deinitialize sound subsystem */
+ pjmedia_snd_deinit();
+
return PJ_SUCCESS;
}