diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index ed57e81e1e..b996167074 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -295,6 +295,7 @@ typedef enum { TFLAG_NOTIMER_DURING_BRIDGE, TFLAG_JB_PAUSED, TFLAG_3PCC_INVITE, + TFLAG_NOREPLY, /* No new flags below this line */ TFLAG_MAX } TFLAGS; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index c5efbf63bb..734fa4f6d0 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -5244,8 +5244,8 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, if (tech_pvt->num_codecs) { match = sofia_glue_negotiate_sdp(session, r_sdp); } - - if (match && switch_channel_test_app_flag_key("T38", tech_pvt->channel, CF_APP_T38)) { + + if (match && sofia_test_flag(tech_pvt, TFLAG_NOREPLY)) { goto done; } diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index a0f71a9466..dba65d2aac 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -4389,6 +4389,10 @@ uint8_t sofia_glue_negotiate_sdp(switch_core_session_t *session, const char *r_s if (got_udptl && m->m_type == sdp_media_image && m->m_port) { switch_t38_options_t *t38_options = tech_process_udptl(tech_pvt, sdp, m); + + if (switch_channel_test_app_flag_key("T38", tech_pvt->channel, CF_APP_T38)) { + sofia_set_flag(tech_pvt, TFLAG_NOREPLY); + } if (switch_true(switch_channel_get_variable(channel, "refuse_t38"))) { switch_channel_clear_app_flag_key("T38", tech_pvt->channel, CF_APP_T38);