From 35b9439b8a5556d4513370c2551dec0cd63cf191 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 27 Apr 2010 14:22:23 -0500 Subject: [PATCH] replace don't bridge when parsing replaces header on invite --- src/mod/endpoints/mod_sofia/sofia.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 3d0dc95f21..83b800a90b 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -6433,12 +6433,18 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ if (uuid) { switch_core_session_t *c_session = NULL; int do_conf = 0; + const char *c_app = NULL; + const char *c_data = NULL; + uuid = switch_core_session_strdup(b_session, uuid); if ((c_session = switch_core_session_locate(uuid))) { switch_channel_t *c_channel = switch_core_session_get_channel(c_session); private_object_t *c_tech_pvt = NULL; + c_app = switch_channel_get_variable(c_channel, SWITCH_CURRENT_APPLICATION_VARIABLE); + c_data = switch_channel_get_variable(c_channel, SWITCH_CURRENT_APPLICATION_DATA_VARIABLE); + if (switch_core_session_check_interface(c_session, sofia_endpoint_interface)) { c_tech_pvt = switch_core_session_get_private(c_session); } @@ -6461,7 +6467,15 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ if (do_conf) { destination_number = switch_core_session_sprintf(b_session, "answer,conference:%s@sla+flags{mintwo}", uuid); } else { - destination_number = switch_core_session_sprintf(b_session, "answer,intercept:%s", uuid); + if (one_leg && c_app) { + if (c_data) { + destination_number = switch_core_session_sprintf(b_session, "answer,%s:%s", c_app, c_data); + } else { + destination_number = switch_core_session_sprintf(b_session, "answer,%s", c_app); + } + } else { + destination_number = switch_core_session_sprintf(b_session, "answer,intercept:%s", uuid); + } } dialplan = "inline";