Revision
14909
Author
anthm
Date
2009-09-17 16:38:04 -0500 (Thu, 17 Sep 2009)

Log Message

disable duplicate headers on request param events

Modified Paths

Diff

Modified: freeswitch/trunk/libs/esl/src/esl_event.c (14908 => 14909)


--- freeswitch/trunk/libs/esl/src/esl_event.c	2009-09-17 20:11:56 UTC (rev 14908)
+++ freeswitch/trunk/libs/esl/src/esl_event.c	2009-09-17 21:38:04 UTC (rev 14909)
@@ -299,6 +299,10 @@
 	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);

Modified: freeswitch/trunk/libs/esl/src/include/esl_event.h (14908 => 14909)


--- freeswitch/trunk/libs/esl/src/include/esl_event.h	2009-09-17 20:11:56 UTC (rev 14908)
+++ freeswitch/trunk/libs/esl/src/include/esl_event.h	2009-09-17 21:38:04 UTC (rev 14909)
@@ -160,8 +160,12 @@
 	/*! 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

Modified: freeswitch/trunk/src/include/switch_event.h (14908 => 14909)


--- freeswitch/trunk/src/include/switch_event.h	2009-09-17 20:11:56 UTC (rev 14908)
+++ freeswitch/trunk/src/include/switch_event.h	2009-09-17 21:38:04 UTC (rev 14909)
@@ -95,8 +95,14 @@
 	/*! 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

Modified: freeswitch/trunk/src/switch_event.c (14908 => 14909)


--- freeswitch/trunk/src/switch_event.c	2009-09-17 20:11:56 UTC (rev 14908)
+++ freeswitch/trunk/src/switch_event.c	2009-09-17 21:38:04 UTC (rev 14909)
@@ -635,6 +635,10 @@
 
 	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 @@
 	}
 #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);