diff --git a/src/mod/applications/mod_sms/mod_sms.c b/src/mod/applications/mod_sms/mod_sms.c index f70282f8c6..ee13481c03 100644 --- a/src/mod/applications/mod_sms/mod_sms.c +++ b/src/mod/applications/mod_sms/mod_sms.c @@ -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); } diff --git a/src/switch_loadable_module.c b/src/switch_loadable_module.c index 51f343a70e..739f20f566 100644 --- a/src/switch_loadable_module.c +++ b/src/switch_loadable_module.c @@ -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);