From 165f54216c47a5343ac0c7a6ac62fd6a9de57b5f Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Tue, 6 Jan 2015 17:17:05 +0100 Subject: [PATCH] mod_sofia: Set sip_to_tag on ringing indication for inbound channels. When bridging a call, the to-tag used in the outgoing 180 Ringing message for the inbound channel is unavailable until the channel has been answered. For the outgoing channel this value is already available through the sip_to_tag variable via the event socket. This is solved this by setting sip_to_tag to the local leg's tag when receiving a ringing indication for inbound channels. This will also make the variable available in the CHANNEL_PROGRESS event through event socket. FS-7137 #resolve --- src/mod/endpoints/mod_sofia/mod_sofia.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index e1438753be..223bb195b3 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -2066,6 +2066,15 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi const char *call_info = switch_channel_get_variable(channel, "presence_call_info_full"); char *cid = generate_pai_str(tech_pvt); + /* Set sip_to_tag to local tag for inbound channels. */ + if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND) { + const char* to_tag = ""; + to_tag = switch_str_nil(nta_leg_get_tag(tech_pvt->nh->nh_ds->ds_leg)); + if(to_tag) { + switch_channel_set_variable(channel, "sip_to_tag", to_tag); + } + } + switch (ring_ready_val) { case SWITCH_RING_READY_QUEUED: