From: Seven Du Date: Fri, 6 Dec 2019 08:41:03 +0000 (+0800) Subject: [mod_loopback] add refer mock to null endpoint X-Git-Tag: v1.10.2^2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2aec6035ddb645aaa31fa98d6bb534b790b687f0;p=thirdparty%2Ffreeswitch.git [mod_loopback] add refer mock to null endpoint --- diff --git a/src/mod/endpoints/mod_loopback/mod_loopback.c b/src/mod/endpoints/mod_loopback/mod_loopback.c index 6e1d629abf..6d77eb946b 100644 --- a/src/mod/endpoints/mod_loopback/mod_loopback.c +++ b/src/mod/endpoints/mod_loopback/mod_loopback.c @@ -1551,6 +1551,29 @@ static switch_status_t null_channel_receive_message(switch_core_session_t *sessi case SWITCH_MESSAGE_INDICATE_AUDIO_SYNC: switch_core_timer_sync(&tech_pvt->timer); break; + case SWITCH_MESSAGE_INDICATE_DEFLECT: + if (msg->string_array_arg[0]) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "string_array_arg[0]: %s\n", (char *)msg->string_array_arg[0]); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "string_arg: %s\n", (char *)msg->string_arg); + if (msg->string_arg) { + if (!strncmp(msg->string_arg, "sip:refer-200", 13)) { + switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_BLIND_TRANSFER); + switch_channel_set_variable(channel, "sip_refer_status_code", "202"); + switch_channel_set_variable(channel, "sip_refer_reply", "SIP/2.0 200 OK\r\n"); + } else if (!strncmp(msg->string_arg, "sip:refer-202", 13)) { + switch_channel_set_variable(channel, "sip_refer_status_code", "202"); + // no notify received + switch_yield(5000000); + switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_NORMAL_CLEARING); + } else if (!strncmp(msg->string_arg, "sip:refer-403", 13)) { + switch_channel_set_variable(channel, "sip_refer_status_code", "202"); + switch_channel_set_variable(channel, "sip_refer_reply", "SIP/2.0 403 Forbidden\r\n"); + switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_BLIND_TRANSFER); + } + } + } + break; default: break; }