Revision
14354
Author
mikej
Date
2009-07-24 15:13:36 -0500 (Fri, 24 Jul 2009)

Log Message

mod_event_socket: sendevent Fire events with correct event-name and subclass (MODEVENT-41)

Modified Paths

Diff

Modified: freeswitch/trunk/src/include/switch_event.h (14353 => 14354)


--- freeswitch/trunk/src/include/switch_event.h	2009-07-24 19:34:32 UTC (rev 14353)
+++ freeswitch/trunk/src/include/switch_event.h	2009-07-24 20:13:36 UTC (rev 14354)
@@ -163,6 +163,9 @@
 SWITCH_DECLARE(switch_status_t) switch_event_add_header(switch_event_t *event, switch_stack_t stack,
 														const char *header_name, const char *fmt, ...) PRINTF_FUNCTION(4, 5);
 #endif
+
+SWITCH_DECLARE(switch_status_t) switch_event_set_subclass_name(switch_event_t *event, const char *subclass_name);
+
 /*!
   \brief Add a string header to an event
   \param event the event to add the header to

Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c (14353 => 14354)


--- freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	2009-07-24 19:34:32 UTC (rev 14353)
+++ freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	2009-07-24 20:13:36 UTC (rev 14354)
@@ -1085,6 +1085,7 @@
 								}
 							}
 							if (var && val) {
+								switch_event_del_header(*event, var);
 								switch_event_add_header_string(*event, SWITCH_STACK_BOTTOM, var, val);
 								if (!strcasecmp(var, "content-length")) {
 									clen = atoi(val);
@@ -1687,7 +1688,12 @@
 		if (ename) {
 			switch_event_types_t etype;
 			if (switch_name_event(ename, &etype) == SWITCH_STATUS_SUCCESS) {
+				const char *subclass_name = switch_event_get_header(*event, "Event-Subclass");
 				(*event)->event_id = etype;
+
+				if (etype == SWITCH_EVENT_CUSTOM && subclass_name) {
+					switch_event_set_subclass_name(*event, subclass_name);
+				}
 			}
 		}
 

Modified: freeswitch/trunk/src/switch_event.c (14353 => 14354)


--- freeswitch/trunk/src/switch_event.c	2009-07-24 19:34:32 UTC (rev 14353)
+++ freeswitch/trunk/src/switch_event.c	2009-07-24 20:13:36 UTC (rev 14354)
@@ -782,6 +782,17 @@
 	return switch_event_base_add_header(event, stack, header_name, data);
 }
 
+SWITCH_DECLARE(switch_status_t) switch_event_set_subclass_name(switch_event_t *event, const char *subclass_name)
+{
+	if (!event || !subclass_name) return SWITCH_STATUS_GENERR;
+	
+	switch_safe_free(event->subclass_name);
+	event->subclass_name = DUP(subclass_name);
+	switch_event_del_header(event, "Event-Subclass");
+	switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Event-Subclass", subclass_name);
+	return SWITCH_STATUS_SUCCESS;
+}
+
 SWITCH_DECLARE(switch_status_t) switch_event_add_header_string(switch_event_t *event, switch_stack_t stack, const char *header_name, const char *data)
 {
 	if (data) {
@@ -848,6 +859,7 @@
 	*event = NULL;
 }
 
+
 SWITCH_DECLARE(switch_status_t) switch_event_dup(switch_event_t **event, switch_event_t *todup)
 {
 	switch_event_header_t *hp;