[Freeswitch-trunk] [commit] r6184 - freeswitch/trunk/src/mod/endpoints/mod_sofia

Freeswitch SVN anthm at freeswitch.org
Wed Nov 7 22:16:29 EST 2007


Author: anthm
Date: Wed Nov  7 22:16:28 2007
New Revision: 6184

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c

Log:
fix restart

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	Wed Nov  7 22:16:28 2007
@@ -457,7 +457,8 @@
 	su_root_run(profile->s_root);
 	nua_destroy(profile->nua);
 
-
+	switch_mutex_lock(profile->ireg_mutex);
+	switch_mutex_unlock(profile->ireg_mutex);
 
 	if (switch_event_create(&s_event, SWITCH_EVENT_UNPUBLISH) == SWITCH_STATUS_SUCCESS) {
 		switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "service", "_sip._udp,_sip._tcp,_sip._sctp");

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	Wed Nov  7 22:16:28 2007
@@ -1658,9 +1658,27 @@
 void sofia_glue_del_profile(sofia_profile_t *profile)
 {
 	sofia_gateway_t *gp;
-
+	char *aliases[512];
+	int i = 0, j = 0;
+	switch_hash_index_t *hi;
+	const void *var;
+	void *val;
+	
 	switch_mutex_lock(mod_sofia_globals.hash_mutex);
-	switch_core_hash_delete(mod_sofia_globals.profile_hash, profile->name);
+
+	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();
+		}
+	}
+
+	for (j = 0; j < i && j < 512; j++) {
+		switch_core_hash_delete(mod_sofia_globals.profile_hash, aliases[j]);
+		free(aliases[j]);
+	}
+
 	for (gp = profile->gateways; gp; gp = gp->next) {
 		switch_core_hash_delete(mod_sofia_globals.gateway_hash, gp->name);
 	}



More information about the Freeswitch-trunk mailing list