From f04fd38c3e695efc17ca79efb2337763113fc87e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 4 Oct 2011 17:46:49 -0500 Subject: [PATCH] FS-3594 if this does not work you will need to give me access to your box --- src/mod/endpoints/mod_sofia/sofia.c | 2 +- src/mod/endpoints/mod_sofia/sofia_reg.c | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 775722f6ef..c2b344cdf7 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -808,7 +808,7 @@ static void our_sofia_event_callback(nua_event_t event, int check_destroy = 1; - if (sofia_private && sofia_private->de) { + if (sofia_private && sofia_private->is_call && sofia_private->de) { sofia_dispatch_event_t *qde = sofia_private->de; sofia_private->de = NULL; sofia_process_dispatch_event(&qde); diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index a65c205b8f..bccae9293f 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -68,6 +68,10 @@ static void sofia_reg_new_handle(sofia_gateway_t *gateway_ptr, int attach) static void sofia_reg_kill_reg(sofia_gateway_t *gateway_ptr) { + if (gateway_ptr->nh) { + nua_handle_bind(gateway_ptr->nh, NULL); + } + if (gateway_ptr->state != REG_STATE_REGED) { if (gateway_ptr->nh) { nua_handle_destroy(gateway_ptr->nh); @@ -76,19 +80,10 @@ static void sofia_reg_kill_reg(sofia_gateway_t *gateway_ptr) return; } - /* - if (!gateway_ptr->nh) { - sofia_reg_new_handle(gateway_ptr, SWITCH_FALSE); - } - */ - if (gateway_ptr->nh) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "UN-Registering %s\n", gateway_ptr->name); nua_unregister(gateway_ptr->nh, NUTAG_URL(gateway_ptr->register_url), NUTAG_REGISTRAR(gateway_ptr->register_proxy), TAG_END()); } - - - } void sofia_reg_fire_custom_gateway_state_event(sofia_gateway_t *gateway, int status, const char *phrase) @@ -114,6 +109,10 @@ void sofia_reg_unregister(sofia_profile_t *profile) switch_mutex_lock(mod_sofia_globals.hash_mutex); for (gateway_ptr = profile->gateways; gateway_ptr; gateway_ptr = gateway_ptr->next) { + if (gateway_ptr->nh) { + nua_handle_bind(gateway_ptr->nh, NULL); + } + if (gateway_ptr->sofia_private) { sofia_private_free(gateway_ptr->sofia_private); }