diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 6e1579fb92..dbbdb0289a 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -1663,14 +1663,17 @@ void sofia_glue_del_profile(sofia_profile_t *profile) switch_hash_index_t *hi; const void *var; void *val; + sofia_profile_t *pptr; switch_mutex_lock(mod_sofia_globals.hash_mutex); for (hi = switch_hash_first(NULL, mod_sofia_globals.profile_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, &var, NULL, &val); - aliases[i++] = strdup((char *) var); - if (i == 512) { - abort(); + if ((pptr = (sofia_profile_t *) val) && pptr == profile) { + aliases[i++] = strdup((char *) var); + if (i == 512) { + abort(); + } } } @@ -1681,6 +1684,8 @@ void sofia_glue_del_profile(sofia_profile_t *profile) for (gp = profile->gateways; gp; gp = gp->next) { switch_core_hash_delete(mod_sofia_globals.gateway_hash, gp->name); + switch_core_hash_delete(mod_sofia_globals.gateway_hash, gp->register_from); + switch_core_hash_delete(mod_sofia_globals.gateway_hash, gp->register_contact); } switch_mutex_unlock(mod_sofia_globals.hash_mutex);