From 64c7fee8ca4cbb8c9eb679dae2a7b7b42944b9b3 Mon Sep 17 00:00:00 2001 From: Luis Azedo Date: Wed, 22 Apr 2015 20:11:12 +0100 Subject: [PATCH] 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 --- src/mod/endpoints/mod_sofia/sofia.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 78d8484bda..7c8c31ff6e 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -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)) {