]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
disable duplicate headers on request param events
authorAnthony Minessale <anthony.minessale@gmail.com>
Thu, 17 Sep 2009 21:38:04 +0000 (21:38 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Thu, 17 Sep 2009 21:38:04 +0000 (21:38 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@14909 d0543943-73ff-0310-b7d9-9358b9ac24b2

libs/esl/src/esl_event.c
libs/esl/src/include/esl_event.h
src/include/switch_event.h
src/switch_event.c

index 0d19bb704b834fa39306d1607f95d91e94cd0651..e2f6359b53a8613aa819b5e9808c0939674756f8 100644 (file)
@@ -299,6 +299,10 @@ static esl_status_t esl_event_base_add_header(esl_event_t *event, esl_stack_t st
        header = ALLOC(sizeof(*header));
        esl_assert(header);
 
+       if ((event->flags & EF_UNIQ_HEADERS)) {
+               esl_event_del_header(event, header_name);
+       }
+
        memset(header, 0, sizeof(*header));
 
        header->name = DUP(header_name);
index d640b6a73e77f503c8899cc9f37ea1f592c36772..14c21a5967f378fd3efba9c46006b0ed7473394b 100644 (file)
@@ -160,8 +160,12 @@ struct esl_event {
        /*! unique key */
        unsigned long key;
        struct esl_event *next;
+       int flags;
 };
 
+typedef enum {
+       EF_UNIQ_HEADERS = (1 << 0)
+} esl_event_flag_t;
 
 
 #define ESL_EVENT_SUBCLASS_ANY NULL
index 1fbcd14abed99ac071904bf13a8b0da5ad818a0a..0cfc1bab15a2af9dc38be46aad69b5eb7a753a29 100644 (file)
@@ -95,8 +95,14 @@ struct switch_event {
        /*! unique key */
        unsigned long key;
        struct switch_event *next;
+       int flags;
 };
 
+typedef enum {
+       EF_UNIQ_HEADERS = (1 << 0)
+} switch_event_flag_t;
+
+
 struct switch_event_node;
 
 #define SWITCH_EVENT_SUBCLASS_ANY NULL
index ef5c02845a8868e914988d674f5455202c7d2fc1..9bc81d9a1dc9de159e2b5d44678225a46b536cc8 100644 (file)
@@ -635,6 +635,10 @@ SWITCH_DECLARE(switch_status_t) switch_event_create_subclass_detailed(const char
 
        memset(*event, 0, sizeof(switch_event_t));
 
+       if (event_id == SWITCH_EVENT_REQUEST_PARAMS) {
+               (*event)->flags |= EF_UNIQ_HEADERS;
+       }
+
        if (event_id != SWITCH_EVENT_CLONE) {
                (*event)->event_id = event_id;
                switch_event_prep_for_delivery_detailed(file, func, line, *event);
@@ -742,6 +746,10 @@ switch_status_t switch_event_base_add_header(switch_event_t *event, switch_stack
        }
 #endif
 
+       if (switch_test_flag(event, EF_UNIQ_HEADERS)) {
+               switch_event_del_header(event, header_name);
+       }
+
        memset(header, 0, sizeof(*header));
 
        header->name = DUP(header_name);