summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsip-ua/sip_timer.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip/src/pjsip-ua/sip_timer.c')
-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;
}
-