diff options
author | Joshua Colp <jcolp@digium.com> | 2016-07-08 15:21:35 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2016-07-08 15:21:35 -0500 |
commit | e0f27ecabb2ff766ea4ec7bdd77fccab2fe826c4 (patch) | |
tree | f454543a42b19d1a98d420224e173b47bc3979f3 | |
parent | 99cbecd2704a36e59ecf357b9500e02801dc50a3 (diff) | |
parent | 302be4809aefc850f9b2335e074e5c88c4655fb6 (diff) |
Merge "chan_sip/res_pjsip_t38: Handle a request to negotiate T.38 after it is enabled."
-rw-r--r-- | channels/chan_sip.c | 3 | ||||
-rw-r--r-- | res/res_pjsip_t38.c | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index e086711c2..28379ff85 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -7669,7 +7669,8 @@ static int interpret_t38_parameters(struct sip_pvt *p, const struct ast_control_ ast_udptl_set_local_max_ifp(p->udptl, p->t38.our_parms.max_ifp); change_t38_state(p, T38_ENABLED); transmit_response_with_t38_sdp(p, "200 OK", &p->initreq, XMIT_CRITICAL); - } else if (p->t38.state != T38_ENABLED) { + } else if ((p->t38.state != T38_ENABLED) || ((p->t38.state == T38_ENABLED) && + (parameters->request_response == AST_T38_REQUEST_NEGOTIATE))) { p->t38.our_parms = *parameters; ast_udptl_set_local_max_ifp(p->udptl, p->t38.our_parms.max_ifp); change_t38_state(p, T38_LOCAL_REINVITE); diff --git a/res/res_pjsip_t38.c b/res/res_pjsip_t38.c index c02517104..76720acee 100644 --- a/res/res_pjsip_t38.c +++ b/res/res_pjsip_t38.c @@ -361,7 +361,9 @@ static int t38_interpret_parameters(void *obj) ast_udptl_set_local_max_ifp(session_media->udptl, state->our_parms.max_ifp); t38_change_state(data->session, session_media, state, T38_ENABLED); ast_sip_session_resume_reinvite(data->session); - } else if (data->session->t38state != T38_ENABLED) { + } else if ((data->session->t38state != T38_ENABLED) || + ((data->session->t38state == T38_ENABLED) && + (parameters->request_response == AST_T38_REQUEST_NEGOTIATE))) { if (t38_initialize_session(data->session, session_media)) { break; } |