From 83ecf84e06a3c05eea18ce80f43c83b35641cdbb Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 28 Apr 2014 22:10:09 +0500 Subject: [PATCH] FS-4779 FS-6467 the behaviour from 4479 is now masked behind the param 3pcc-reinvite-bridged-on-ack FS-6467 please test master --- src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index b8c5655e57..a1c220427e 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -229,6 +229,7 @@ typedef enum { PFLAG_STUN_ENABLED, PFLAG_STUN_AUTO_DISABLE, PFLAG_3PCC_PROXY, + PFLAG_3PCC_REINVITE_BRIDGED_ON_ACK, PFLAG_CALLID_AS_UUID, PFLAG_UUID_AS_CALLID, PFLAG_SCROOGE, diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 28e6d6ec15..0ef600b7a4 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -4418,6 +4418,12 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name) if (switch_true(val)) { sofia_set_pflag(profile, PFLAG_BLIND_REG); } + } else if (!strcasecmp(var, "3pcc-reinvite-bridged-on-ack")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_3PCC_REINVITE_BRIDGED_ON_ACK); + } else { + sofia_clear_pflag(profile, PFLAG_3PCC_REINVITE_BRIDGED_ON_ACK); + } } else if (!strcasecmp(var, "enable-3pcc")) { if (switch_true(val)) { sofia_set_pflag(profile, PFLAG_3PCC); @@ -6493,11 +6499,14 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, } else { switch_core_session_message_t *msg; - msg = switch_core_session_alloc(other_session, sizeof(*msg)); - msg->message_id = SWITCH_MESSAGE_INDICATE_MEDIA_REDIRECT; - msg->from = __FILE__; - msg->string_arg = switch_core_session_strdup(other_session, r_sdp); - switch_core_session_queue_message(other_session, msg); + if (sofia_test_pflag(profile, PFLAG_3PCC_REINVITE_BRIDGED_ON_ACK)) { + msg = switch_core_session_alloc(other_session, sizeof(*msg)); + msg->message_id = SWITCH_MESSAGE_INDICATE_MEDIA_REDIRECT; + msg->from = __FILE__; + msg->string_arg = switch_core_session_strdup(other_session, r_sdp); + switch_core_session_queue_message(other_session, msg); + } + switch_core_session_queue_indication(other_session, SWITCH_MESSAGE_INDICATE_ANSWER); } -- 2.47.2