From e4e4f007c5c2c44bb38569a11557304d082e7e0f Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthony.minessale@gmail.com>
Date: Thu, 8 Nov 2007 14:06:32 +0000
Subject: [PATCH] fix profile reload issue

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6186 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 src/mod/endpoints/mod_sofia/sofia_glue.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

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);