summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2009-08-17 15:56:18 +0000
committerNanang Izzuddin <nanang@teluu.com>2009-08-17 15:56:18 +0000
commit13f50ed498f48ebcb51699621a6e51d877754867 (patch)
treea6328592eb3e5eef222d4d1b750763938249a9f1
parent11cfa6f01fae0418234b517996d86094632f6e17 (diff)
Ticket #833: Fixed bug session timer won't work properly after pjsua-lib restarted, by adding deinit module function for session timer and register the deinit function into atexit.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2893 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip/src/pjsip-ua/sip_timer.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/pjsip/src/pjsip-ua/sip_timer.c b/pjsip/src/pjsip-ua/sip_timer.c
index ad96933b..bc2b0293 100644
--- a/pjsip/src/pjsip-ua/sip_timer.c
+++ b/pjsip/src/pjsip-ua/sip_timer.c
@@ -475,6 +475,12 @@ static void stop_timer(pjsip_inv_session *inv)
}
}
+/* Deinitialize Session Timers */
+static void pjsip_timer_deinit_module(void)
+{
+ is_initialized = PJ_FALSE;
+}
+
/*
* Initialize Session Timers support in PJSIP.
*/
@@ -505,6 +511,16 @@ PJ_DEF(pj_status_t) pjsip_timer_init_module(pjsip_endpoint *endpt)
if (status != PJ_SUCCESS)
return status;
+ /* Register deinit module to be executed when PJLIB shutdown */
+ if (pj_atexit(&pjsip_timer_deinit_module) != PJ_SUCCESS) {
+ /* Failure to register this function may cause this module won't
+ * work properly when the stack is restarted (without quitting
+ * application).
+ */
+ pj_assert(!"Failed to register Session Timer deinit.");
+ PJ_LOG(1, (THIS_FILE, "Failed to register Session Timer deinit."));
+ }
+
is_initialized = PJ_TRUE;
return PJ_SUCCESS;
@@ -992,4 +1008,3 @@ PJ_DEF(pj_status_t) pjsip_timer_end_session(pjsip_inv_session *inv)
return PJ_SUCCESS;
}
-