mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-19 09:47:23 +00:00
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
This commit is contained in:
parent
a4d877c189
commit
b33563138b
@ -9885,7 +9885,14 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia
|
|||||||
"%sanswer,sofia_sla:%s", codec_str, b_private->uuid);
|
"%sanswer,sofia_sla:%s", codec_str, b_private->uuid);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!zstr(bridge_uuid)) {
|
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));
|
||||||
|
}
|
||||||
|
if(pickup) {
|
||||||
|
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)) {
|
||||||
switch_channel_mark_hold(b_channel, SWITCH_FALSE);
|
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", bridge_uuid);
|
tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, "answer,intercept:%s", bridge_uuid);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user