try to fix SOA problem with early and answer audio with dissimilar sdp

This commit is contained in:
Anthony Minessale 2011-02-01 11:23:32 -06:00
parent 33848eb01c
commit 52bf0423e2

View File

@ -707,11 +707,20 @@ static switch_status_t sofia_answer_channel(switch_core_session_t *session)
cid = generate_pai_str(tech_pvt); cid = generate_pai_str(tech_pvt);
if (switch_channel_test_flag(tech_pvt->channel, CF_PROXY_MODE) && tech_pvt->early_sdp && strcmp(tech_pvt->early_sdp, tech_pvt->local_sdp_str)) { if (switch_channel_test_flag(tech_pvt->channel, CF_PROXY_MODE) && tech_pvt->early_sdp) {
/* The SIP RFC for SOA forbids sending a 183 with one sdp then a 200 with another but it won't do us much good unless char *a, *b;
we do so in this case we will abandon the SOA rules and go rogue.
*/ /* start at the s= line to avoid some devices who update the o= between messages */
sofia_clear_flag(tech_pvt, TFLAG_ENABLE_SOA); a = strstr(tech_pvt->early_sdp, "s=");
b = strstr(tech_pvt->local_sdp_str, "s=");
if (!a || !b || strcmp(a, b)) {
/* The SIP RFC for SOA forbids sending a 183 with one sdp then a 200 with another but it won't do us much good unless
we do so in this case we will abandon the SOA rules and go rogue.
*/
sofia_clear_flag(tech_pvt, TFLAG_ENABLE_SOA);
}
} }
if (sofia_use_soa(tech_pvt)) { if (sofia_use_soa(tech_pvt)) {