mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-09 11:28:25 +00:00
Inband DTMF regression
The functionality of inband DTMF in chan_sip relied upon ast_rtp_instance_dtmf_mode_get/set not working properly to avoid calling ast_rtp_instance_dtmf_begin/end on RTP streams with inband DTMF. According to documentation, ast_rtp_instance_dtmf_begin/end is meant only for RFC2833 DTMF, never inband. This fixes the regression introduced in revision 328823. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@328935 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -6486,11 +6486,7 @@ static int sip_senddigit_begin(struct ast_channel *ast, char digit)
|
|||||||
sip_pvt_lock(p);
|
sip_pvt_lock(p);
|
||||||
switch (ast_test_flag(&p->flags[0], SIP_DTMF)) {
|
switch (ast_test_flag(&p->flags[0], SIP_DTMF)) {
|
||||||
case SIP_DTMF_INBAND:
|
case SIP_DTMF_INBAND:
|
||||||
if (p->rtp && ast_rtp_instance_dtmf_mode_get(p->rtp) == AST_RTP_DTMF_MODE_INBAND) {
|
res = -1; /* Tell Asterisk to generate inband indications */
|
||||||
ast_rtp_instance_dtmf_begin(p->rtp, digit);
|
|
||||||
} else {
|
|
||||||
res = -1; /* Tell Asterisk to generate inband indications */
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case SIP_DTMF_RFC2833:
|
case SIP_DTMF_RFC2833:
|
||||||
if (p->rtp)
|
if (p->rtp)
|
||||||
@@ -6522,11 +6518,7 @@ static int sip_senddigit_end(struct ast_channel *ast, char digit, unsigned int d
|
|||||||
ast_rtp_instance_dtmf_end_with_duration(p->rtp, digit, duration);
|
ast_rtp_instance_dtmf_end_with_duration(p->rtp, digit, duration);
|
||||||
break;
|
break;
|
||||||
case SIP_DTMF_INBAND:
|
case SIP_DTMF_INBAND:
|
||||||
if (p->rtp && ast_rtp_instance_dtmf_mode_get(p->rtp) == AST_RTP_DTMF_MODE_INBAND) {
|
res = -1; /* Tell Asterisk to stop inband indications */
|
||||||
ast_rtp_instance_dtmf_end(p->rtp, digit);
|
|
||||||
} else {
|
|
||||||
res = -1; /* Tell Asterisk to stop inband indications */
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sip_pvt_unlock(p);
|
sip_pvt_unlock(p);
|
||||||
|
|||||||
Reference in New Issue
Block a user