diff options
-rw-r--r-- | pjsip/src/pjsip-ua/sip_timer.c | 17 |
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; } - |