diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 0b13178b13..17b364ffcb 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -3958,17 +3958,22 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, r_sdp = tech_pvt->last_sdp_str; } - /* This marr in our code brought to you by people who can't read........*/ - if (profile->ndlb & PFLAG_NDLB_ALLOW_BAD_IANANAME && r_sdp && (p = (char *) switch_stristr("g729a/8000", r_sdp))) { - p += 4; - *p++ = '/'; - *p++ = '8'; - *p++ = '0'; - *p++ = '0'; - *p++ = '0'; - *p++ = ' '; + if ((channel && (switch_channel_test_flag(channel, CF_PROXY_MODE) || switch_channel_test_flag(channel, CF_PROXY_MEDIA))) || + (sofia_test_flag(profile, TFLAG_INB_NOMEDIA) || sofia_test_flag(profile, TFLAG_PROXY_MEDIA))) { + + /* This marr in our code brought to you by people who can't read........*/ + if (profile->ndlb & PFLAG_NDLB_ALLOW_BAD_IANANAME && r_sdp && (p = (char *) switch_stristr("g729a/8000", r_sdp))) { + p += 4; + *p++ = '/'; + *p++ = '8'; + *p++ = '0'; + *p++ = '0'; + *p++ = '0'; + *p++ = ' '; + } } + if (ss_state == nua_callstate_terminated) { if ((status == 300 || status == 302 || status == 305) && session) {