提交 64c7fee8 authored 作者: Luis Azedo's avatar Luis Azedo 提交者: Anthony Minessale

conditionally allow intercept of replaced call-id when processing replaces header

without this change one leg calls inhaled could not be picked because there is no bridge_uuid.

FS-7463 #resolve
上级 c2c04632
......@@ -9885,11 +9885,13 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia
"%sanswer,sofia_sla:%s", codec_str, b_private->uuid);
}
} else {
char* pickup = NULL;
if(sip->sip_replaces->rq_url->url_params && sip->sip_replaces->rp_call_id) {
pickup = switch_find_parameter(sip->sip_replaces->rq_url->url_params,"pickup", switch_core_session_get_pool(session));
char *aleg = NULL;
if (sip->sip_replaces && sip->sip_replaces->rp_params && sip->sip_replaces->rp_call_id) {
aleg = switch_find_parameter(sip->sip_replaces->rp_params, "a-leg", switch_core_session_get_pool(session));
}
if(pickup) {
if (aleg) {
switch_channel_mark_hold(b_channel, SWITCH_FALSE);
tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, "answer,intercept:%s", sip->sip_replaces->rp_call_id);
} else if (!zstr(bridge_uuid)) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论