From c2468b4c32f69fe117df94840e0211cfc454ec2e Mon Sep 17 00:00:00 2001
From: Russell Bryant <russell@russellbryant.com>
Date: Fri, 27 Apr 2007 21:11:46 +0000
Subject: [PATCH] Merged revisions 62218 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r62218 | russell | 2007-04-27 16:10:51 -0500 (Fri, 27 Apr 2007) | 11 lines

Fix a weird problem where when a caller talking to someone sitting behind an
agent channel sent a digit, the digit would be played to the agent for forever.
This is because chan_agent always returned -1 from its send_digit_begin and _end
callbacks.  This non-zero return value indicates to the Asterisk core that it
would like an inband DTMF generator put on the channel.  However, this is the
wrong thing to do.  It should *always* return 0, instead.  When the digit begin
and end functions are called on the proxied channel, the underlying channel
will indicate whether inband DTMF is needed or not, and the generator will be
put on that one, and not the Agent channel.
(issue #9615, #9616, reported by jiddings and BigJimmy, and fixed by me)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@62219 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_agent.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index 50b3666d98..928559bbd8 100644
--- a/channels/chan_agent.c
+++ b/channels/chan_agent.c
@@ -604,21 +604,19 @@ static int agent_indicate(struct ast_channel *ast, int condition, const void *da
 static int agent_digit_begin(struct ast_channel *ast, char digit)
 {
 	struct agent_pvt *p = ast->tech_pvt;
-	int res = -1;
 	ast_mutex_lock(&p->lock);
 	ast_senddigit_begin(p->chan, digit);
 	ast_mutex_unlock(&p->lock);
-	return res;
+	return 0;
 }
 
 static int agent_digit_end(struct ast_channel *ast, char digit, unsigned int duration)
 {
 	struct agent_pvt *p = ast->tech_pvt;
-	int res = -1;
 	ast_mutex_lock(&p->lock);
 	ast_senddigit_end(p->chan, digit, duration);
 	ast_mutex_unlock(&p->lock);
-	return res;
+	return 0;
 }
 
 static int agent_call(struct ast_channel *ast, char *dest, int timeout)
-- 
GitLab