[Freeswitch-branches] [commit] r11400 - freeswitch/branches/1.0/src/mod/applications/mod_limit

FreeSWITCH SVN mikej at freeswitch.org
Thu Jan 22 13:40:38 PST 2009


Author: mikej
Date: Thu Jan 22 15:40:38 2009
New Revision: 11400

Log:
mod_limit: fix memory corruption caused by race condition when using limit hash (r:11070-11071)

Modified:
   freeswitch/branches/1.0/src/mod/applications/mod_limit/mod_limit.c

Modified: freeswitch/branches/1.0/src/mod/applications/mod_limit/mod_limit.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/applications/mod_limit/mod_limit.c	(original)
+++ freeswitch/branches/1.0/src/mod/applications/mod_limit/mod_limit.c	Thu Jan 22 15:40:38 2009
@@ -300,7 +300,7 @@
 	/* The call is either hung up, or is going back into the dialplan, decrement appropriate couters */
 	if (state == CS_HANGUP || state == CS_ROUTING) {	
 		switch_hash_index_t *hi;
-		switch_mutex_lock(globals.mutex);
+		switch_mutex_lock(globals.limit_hash_mutex);
 
 		/* Loop through the channel's hashtable which contains mapping to all the limit_hash_item_t referenced by that channel */
 		for(hi = switch_hash_first(NULL, channel_hash); hi; hi = switch_hash_next(hi))
@@ -319,7 +319,7 @@
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Usage for %s is now %d\n", (const char*)key, item->total_usage);	
 		}
 		switch_core_event_hook_remove_state_change(session, hash_state_handler);
-		switch_mutex_unlock(globals.mutex);
+		switch_mutex_unlock(globals.limit_hash_mutex);
 	}
 	
 	return SWITCH_STATUS_SUCCESS;



More information about the Freeswitch-branches mailing list