Merge "res_pjsip_transport_management: Allow unload to occur." into 13

changes/37/2637/4
Joshua Colp 9 years ago committed by Gerrit Code Review
commit a048a0ffbd

@ -24,6 +24,8 @@
#include "asterisk.h"
#include <signal.h>
#include <pjsip.h>
#include <pjsip_ua.h>
@ -93,7 +95,7 @@ static void *keepalive_transport_thread(void *data)
/* Once loaded this module just keeps on going as it is unsafe to stop and change the underlying
* callback for the transport manager.
*/
while (1) {
while (keepalive_interval) {
sleep(keepalive_interval);
ao2_callback(transports, OBJ_NODATA, keepalive_transport_cb, NULL);
}
@ -347,7 +349,19 @@ static int load_module(void)
static int unload_module(void)
{
/* This will never get called */
pjsip_tpmgr *tpmgr = pjsip_endpt_get_tpmgr(ast_sip_get_pjsip_endpoint());
if (keepalive_interval) {
keepalive_interval = 0;
pthread_kill(keepalive_thread, SIGURG);
pthread_join(keepalive_thread, NULL);
}
ast_sched_context_destroy(sched);
ao2_ref(transports, -1);
ast_sip_unregister_service(&idle_monitor_module);
pjsip_tpmgr_set_state_cb(tpmgr, tpmgr_state_callback);
return 0;
}

Loading…
Cancel
Save