]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add warnings
authorAnthony Minessale <anthony.minessale@gmail.com>
Mon, 30 Mar 2009 21:09:49 +0000 (21:09 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Mon, 30 Mar 2009 21:09:49 +0000 (21:09 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12844 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_event.c

index 79b22541efa84522855e671189919e1d4fe119f7..c94ddc161ccff3eadc591ab3c1ac951f846316b8 100644 (file)
@@ -1100,7 +1100,8 @@ SWITCH_DECLARE(void) switch_event_prep_for_delivery_detailed(const char *file, c
 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 @@ SWITCH_DECLARE(switch_status_t) switch_event_fire_detailed(const char *file, con
                (*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;