From: Alexandr Anikin Date: Thu, 26 Jan 2012 20:22:05 +0000 (+0000) Subject: Fix outbound DTMF for inband mode (tell asterisk core to generate DTMF X-Git-Tag: 10.2.0-rc1~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a22b12bec5e873c8cfdfc35a0778396e182d05ac;p=thirdparty%2Fasterisk.git Fix outbound DTMF for inband mode (tell asterisk core to generate DTMF sounds). (Closes issue ASTERISK-19233) Reported by: Matt Behrens Patches: chan_ooh323.c.patch uploaded by Matt Behrens (License #6346) ........ Merged revisions 352807 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@352817 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/addons/chan_ooh323.c b/addons/chan_ooh323.c index afe2430c44..74c3f2a00a 100644 --- a/addons/chan_ooh323.c +++ b/addons/chan_ooh323.c @@ -848,6 +848,7 @@ static int ooh323_digit_begin(struct ast_channel *chan, char digit) { char dtmf[2]; struct ooh323_pvt *p = (struct ooh323_pvt *) chan->tech_pvt; + int res = 0; if (gH323Debug) ast_verbose("--- ooh323_digit_begin\n"); @@ -866,17 +867,21 @@ static int ooh323_digit_begin(struct ast_channel *chan, char digit) dtmf[0] = digit; dtmf[1] = '\0'; ooSendDTMFDigit(p->callToken, dtmf); + } else if (p->dtmfmode & H323_DTMF_INBAND) { + res = -1; // tell Asterisk to generate inband indications } ast_mutex_unlock(&p->lock); - if (gH323Debug) - ast_verbose("+++ ooh323_digit_begin\n"); + if (gH323Debug) { + ast_verbose("+++ ooh323_digit_begin %d\n", res); + } - return 0; + return res; } static int ooh323_digit_end(struct ast_channel *chan, char digit, unsigned int duration) { struct ooh323_pvt *p = (struct ooh323_pvt *) chan->tech_pvt; + int res = 0; if (gH323Debug) ast_verbose("--- ooh323_digit_end\n"); @@ -886,14 +891,18 @@ static int ooh323_digit_end(struct ast_channel *chan, char digit, unsigned int d return -1; } ast_mutex_lock(&p->lock); - if (p->rtp && ((p->dtmfmode & H323_DTMF_RFC2833) || (p->dtmfmode & H323_DTMF_CISCO)) ) + if (p->rtp && ((p->dtmfmode & H323_DTMF_RFC2833) || (p->dtmfmode & H323_DTMF_CISCO)) ) { ast_rtp_instance_dtmf_end(p->rtp, digit); + } else if(p->dtmfmode & H323_DTMF_INBAND) { + res = -1; // tell Asterisk to stop inband indications + } ast_mutex_unlock(&p->lock); - if (gH323Debug) - ast_verbose("+++ ooh323_digit_end\n"); + if (gH323Debug) { + ast_verbose("+++ ooh323_digit_end, res = %d\n", res); + } - return 0; + return res; }