]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-4336 --resolve
authorAnthony Minessale <anthm@freeswitch.org>
Sat, 23 Jun 2012 19:55:06 +0000 (14:55 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Sat, 23 Jun 2012 19:55:11 +0000 (14:55 -0500)
src/mod/applications/mod_sms/mod_sms.c
src/switch_loadable_module.c

index f70282f8c6e9683acd7388a4bd93f43bdf8e941a..ee13481c0382f73abf16b8f6946bdc3151e46a00 100644 (file)
@@ -42,7 +42,17 @@ SWITCH_MODULE_DEFINITION(mod_sms, mod_sms_load, mod_sms_shutdown, NULL);
 static void event_handler(switch_event_t *event) 
 {
        const char *dest_proto = switch_event_get_header(event, "dest_proto");
+       const char *check_failure = switch_event_get_header(event, "Delivery-Failure");
        switch_event_add_header(event, SWITCH_STACK_BOTTOM, "skip_global_process", "true");
+
+       if (switch_true(check_failure)) {
+
+               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Delivery Failure\n");
+               DUMP_EVENT(event);
+
+               return;
+       }
+
        switch_core_chat_send(dest_proto, event);
 }
 
index 51f343a70e18fb8dc04900470f0be505d7c0b3ea..739f20f566169bd9d78eba3d31fd515f50a4544f 100644 (file)
@@ -563,7 +563,6 @@ static switch_status_t do_chat_send(switch_event_t *message_event)
                        if ((ci = (switch_chat_interface_t *) val)) {
                                if (ci->chat_send && !strncasecmp(ci->interface_name, "GLOBAL_", 7)) {
                                        status = ci->chat_send(message_event);
-
                                        if (status == SWITCH_STATUS_BREAK) {
                                                do_skip = 1;
                                        }
@@ -581,6 +580,8 @@ static switch_status_t do_chat_send(switch_event_t *message_event)
        if (!do_skip && !switch_stristr("GLOBAL", dest_proto)) {
                if ((ci = switch_loadable_module_get_chat_interface(dest_proto)) && ci->chat_send) {
                        status = ci->chat_send(message_event);
+                                       printf("FRICK\n");
+
                        UNPROTECT_INTERFACE(ci);
                } else {
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid chat interface [%s]!\n", dest_proto);