From d36f5932047a388062bf6cc6bd703427a715e004 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 21 Feb 2012 10:00:19 -0600 Subject: [PATCH] fire failed sms events --- src/switch_loadable_module.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/switch_loadable_module.c b/src/switch_loadable_module.c index 335e15df00..36cc24b282 100644 --- a/src/switch_loadable_module.c +++ b/src/switch_loadable_module.c @@ -579,14 +579,23 @@ 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) { + if ((ci = switch_loadable_module_get_chat_interface(dest_proto)) && ci->chat_send) { + status = ci->chat_send(message_event); + UNPROTECT_INTERFACE(ci); + } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid chat interface [%s]!\n", dest_proto); - return SWITCH_STATUS_FALSE; + status = SWITCH_STATUS_FALSE; } - status = ci->chat_send(message_event); - UNPROTECT_INTERFACE(ci); } + if (status != SWITCH_STATUS_SUCCESS) { + switch_event_t *dup; + switch_event_dup(&dup, message_event); + switch_event_add_header_string(dup, SWITCH_STACK_BOTTOM, "Delivery-Failure", "true"); + switch_event_fire(&dup); + } + + return status; }