]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
mod_event_socket: sendevent Fire events with correct event-name and subclass (MODEVEN...
authorMichael Jerris <mike@jerris.com>
Fri, 24 Jul 2009 20:13:36 +0000 (20:13 +0000)
committerMichael Jerris <mike@jerris.com>
Fri, 24 Jul 2009 20:13:36 +0000 (20:13 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@14354 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_event.h
src/mod/event_handlers/mod_event_socket/mod_event_socket.c
src/switch_event.c

index 32094b5aec894f46039ff634b2ccbc7471b4c713..1fbcd14abed99ac071904bf13a8b0da5ad818a0a 100644 (file)
@@ -163,6 +163,9 @@ SWITCH_DECLARE(char *) switch_event_get_body(switch_event_t *event);
 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
index 8c430a27421abbd535ec16e37f75b99d6891b81f..2d9e1d3c0029f27f307d06b45317ed11dd011f9e 100644 (file)
@@ -1085,6 +1085,7 @@ static switch_status_t read_packet(listener_t *listener, switch_event_t **event,
                                                                }
                                                        }
                                                        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 @@ static switch_status_t parse_command(listener_t *listener, switch_event_t **even
                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);
+                               }
                        }
                }
 
index 3b749a67dfb28b59c87b4a158c5905682953c171..f327af7a74a478e1e6e46f495622e0a5d5e43d2d 100644 (file)
@@ -782,6 +782,17 @@ SWITCH_DECLARE(switch_status_t) switch_event_add_header(switch_event_t *event, s
        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 @@ SWITCH_DECLARE(void) switch_event_destroy(switch_event_t **event)
        *event = NULL;
 }
 
+
 SWITCH_DECLARE(switch_status_t) switch_event_dup(switch_event_t **event, switch_event_t *todup)
 {
        switch_event_header_t *hp;