[Freeswitch-trunk] [commit] r12844 - freeswitch/trunk/src

FreeSWITCH SVN anthm at freeswitch.org
Mon Mar 30 14:10:01 PDT 2009


Author: anthm
Date: Mon Mar 30 16:09:49 2009
New Revision: 12844

Log:
add warnings

Modified:
   freeswitch/trunk/src/switch_event.c

Modified: freeswitch/trunk/src/switch_event.c
==============================================================================
--- freeswitch/trunk/src/switch_event.c	(original)
+++ freeswitch/trunk/src/switch_event.c	Mon Mar 30 16:09:49 2009
@@ -1100,7 +1100,8 @@
 SWITCH_DECLARE(switch_status_t) switch_event_fire_detailed(const char *file, const char *func, int line, switch_event_t **event, void *user_data)
 {
 
-	
+	int index;
+
 	switch_assert(BLOCK != NULL);
 	switch_assert(RUNTIME_POOL != NULL);
 	switch_assert(EVENT_QUEUE_MUTEX != NULL);
@@ -1116,8 +1117,22 @@
 		(*event)->event_user_data = user_data;
 	}
 
+	for (;;) {
+		for (index = (*event)->priority; index < 3; index++) {
+			if (switch_queue_trypush(EVENT_QUEUE[index], *event) == SWITCH_STATUS_SUCCESS) {
+				if (index != (*event)->priority) {
+					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "queued event at a lower priority!\n");
+				}
+				goto end;
+			}
+		}
+		
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Event queue is full!\n");
+		switch_yield(100000);
+	}
+
+ end:
 
-	switch_queue_push(EVENT_QUEUE[(*event)->priority], *event);
 	*event = NULL;
 
 	return SWITCH_STATUS_SUCCESS;



More information about the Freeswitch-trunk mailing list