From 13f50ed498f48ebcb51699621a6e51d877754867 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Mon, 17 Aug 2009 15:56:18 +0000 Subject: 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 --- pjsip/src/pjsip-ua/sip_timer.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'pjsip/src') 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; } - -- cgit v1.2.3