From 099d17c4cb737edc687accdebfab97d9dc5e2a55 Mon Sep 17 00:00:00 2001 From: Matthew Nicholson Date: Thu, 9 Jun 2011 17:37:07 +0000 Subject: [PATCH] don't drop any voice frames when checking for T.38 during early media (closes issue ASTERISK-17705) Review: https://reviewboard.asterisk.org/r/1186/ patch by oej reported by oej git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@322807 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_sip.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/channels/chan_sip.c b/channels/chan_sip.c index ad8997e8bf..b673fb091d 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -6294,7 +6294,11 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame) } if (p) { sip_pvt_lock(p); - if (p->rtp) { + if (p->t38.state == T38_ENABLED) { + /* drop frame, can't sent VOICE frames while in T.38 mode */ + sip_pvt_unlock(p); + break; + } else if (p->rtp) { /* If channel is not up, activate early media session */ if ((ast->_state != AST_STATE_UP) && !ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT) && @@ -6305,12 +6309,9 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame) transmit_provisional_response(p, "183 Session Progress", &p->initreq, TRUE); ast_set_flag(&p->flags[0], SIP_PROGRESS_SENT); } - } else if (p->t38.state == T38_ENABLED) { - /* drop frame, can't sent VOICE frames while in T.38 mode */ - } else { - p->lastrtptx = time(NULL); - res = ast_rtp_instance_write(p->rtp, frame); } + p->lastrtptx = time(NULL); + res = ast_rtp_instance_write(p->rtp, frame); } sip_pvt_unlock(p); } -- 2.47.2