Revision
17209
Author
anthony.minessale
Date
2010-04-02 14:45:36 -0500 (Fri, 02 Apr 2010)

Log Message

FSCORE-583

Modified Paths

Diff

Modified: freeswitch/trunk/src/switch_core_session.c (17208 => 17209)


--- freeswitch/trunk/src/switch_core_session.c	2010-04-02 18:52:35 UTC (rev 17208)
+++ freeswitch/trunk/src/switch_core_session.c	2010-04-02 19:45:36 UTC (rev 17209)
@@ -128,17 +128,20 @@
 }
 
 
+struct str_node {
+	char *str;
+	struct str_node *next;
+};
+
 SWITCH_DECLARE(void) switch_core_session_hupall_matching_var(const char *var_name, const char *var_val, switch_call_cause_t cause)
 {
 	switch_hash_index_t *hi;
 	void *val;
 	switch_core_session_t *session;
 	switch_memory_pool_t *pool;
-	switch_queue_t *queue;
-	void *pop;
+	struct str_node *head = NULL, *np;
 
 	switch_core_new_memory_pool(&pool);
-	switch_queue_create(&queue, 250000, pool);
 
 	if (!var_val)
 		return;
@@ -152,7 +155,10 @@
 			if (switch_core_session_read_lock(session) == SWITCH_STATUS_SUCCESS) {
 				if (switch_channel_up(session->channel) &&
 					(this_val = switch_channel_get_variable(session->channel, var_name)) && (!strcmp(this_val, var_val))) {
-					switch_queue_push(queue, switch_core_strdup(pool, session->uuid_str));
+					np = switch_core_alloc(pool, sizeof(*np));
+					np->str = switch_core_strdup(pool, session->uuid_str);
+					np->next = head;
+					head = np;
 				}
 				switch_core_session_rwunlock(session);
 			}
@@ -160,10 +166,8 @@
 	}
 	switch_mutex_unlock(runtime.session_hash_mutex);
 
-	while (switch_queue_trypop(queue, &pop) == SWITCH_STATUS_SUCCESS && pop) {
-		char *uuid = (char *) pop;
-
-		if ((session = switch_core_session_locate(uuid))) {
+	for(np = head; np; np = np->next) {
+		if ((session = switch_core_session_locate(np->str))) {
 			switch_channel_hangup(session->channel, cause);
 			switch_core_session_rwunlock(session);
 		}
@@ -179,12 +183,10 @@
 	void *val;
 	switch_core_session_t *session;
 	switch_memory_pool_t *pool;
-	switch_queue_t *queue;
-	void *pop;
-
+    struct str_node *head = NULL, *np;
+	
 	switch_core_new_memory_pool(&pool);
-	switch_queue_create(&queue, 250000, pool);
-
+	
 	switch_mutex_lock(runtime.session_hash_mutex);
 	for (hi = switch_hash_first(NULL, session_manager.session_table); hi; hi = switch_hash_next(hi)) {
 		switch_hash_this(hi, NULL, NULL, &val);
@@ -192,7 +194,10 @@
 			session = (switch_core_session_t *) val;
 			if (switch_core_session_read_lock(session) == SWITCH_STATUS_SUCCESS) {
 				if (session->endpoint_interface == endpoint_interface) {
-					switch_queue_push(queue, switch_core_strdup(pool, session->uuid_str));
+					np = switch_core_alloc(pool, sizeof(*np));
+                    np->str = switch_core_strdup(pool, session->uuid_str);
+                    np->next = head;
+					head = np;
 				}
 				switch_core_session_rwunlock(session);
 			}
@@ -200,10 +205,8 @@
 	}
 	switch_mutex_unlock(runtime.session_hash_mutex);
 
-	while (switch_queue_trypop(queue, &pop) == SWITCH_STATUS_SUCCESS && pop) {
-		char *uuid = (char *) pop;
-
-		if ((session = switch_core_session_locate(uuid))) {
+	for(np = head; np; np = np->next) {
+		if ((session = switch_core_session_locate(np->str))) {
 			switch_channel_hangup(session->channel, cause);
 			switch_core_session_rwunlock(session);
 		}
@@ -219,29 +222,29 @@
 	void *val;
 	switch_core_session_t *session;
 	switch_memory_pool_t *pool;
-	switch_queue_t *queue;
-	void *pop;
+	struct str_node *head = NULL, *np;
 
 	switch_core_new_memory_pool(&pool);
-	switch_queue_create(&queue, 250000, pool);
 
+
 	switch_mutex_lock(runtime.session_hash_mutex);
 	for (hi = switch_hash_first(NULL, session_manager.session_table); hi; hi = switch_hash_next(hi)) {
 		switch_hash_this(hi, NULL, NULL, &val);
 		if (val) {
 			session = (switch_core_session_t *) val;
 			if (switch_core_session_read_lock(session) == SWITCH_STATUS_SUCCESS) {
-				switch_queue_push(queue, switch_core_strdup(pool, session->uuid_str));
+				np = switch_core_alloc(pool, sizeof(*np));
+				np->str = switch_core_strdup(pool, session->uuid_str);
+				np->next = head;
+				head = np;
 				switch_core_session_rwunlock(session);
 			}
 		}
 	}
 	switch_mutex_unlock(runtime.session_hash_mutex);
 
-	while (switch_queue_trypop(queue, &pop) == SWITCH_STATUS_SUCCESS && pop) {
-		char *uuid = (char *) pop;
-
-		if ((session = switch_core_session_locate(uuid))) {
+	for(np = head; np; np = np->next) { 
+		if ((session = switch_core_session_locate(np->str))) {
 			switch_channel_hangup(session->channel, cause);
 			switch_core_session_rwunlock(session);
 		}

Modified: freeswitch/trunk/src/switch_pcm.c (17208 => 17209)


--- freeswitch/trunk/src/switch_pcm.c	2010-04-02 18:52:35 UTC (rev 17208)
+++ freeswitch/trunk/src/switch_pcm.c	2010-04-02 19:45:36 UTC (rev 17209)
@@ -633,6 +633,7 @@
 	mod_g711_load(module_interface, pool);
 
 	return SWITCH_STATUS_SUCCESS;
+	//return SWITCH_STATUS_NOUNLOAD;
 }
 
 SWITCH_MODULE_SHUTDOWN_FUNCTION(core_pcm_shutdown)