From afcbf2e14f933ff063e41d2d76323355aca5de09 Mon Sep 17 00:00:00 2001
From: Mark Michelson <mmichelson@digium.com>
Date: Fri, 12 Jun 2009 19:07:51 +0000
Subject: [PATCH] Merged revisions 200360 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r200360 | mmichelson | 2009-06-12 14:06:41 -0500 (Fri, 12 Jun 2009) | 10 lines

  Suppress a warning message and give a better return code when generating
  inband ringing after a call is answered.

  (closes issue #15158)
  Reported by: madkins
  Patches:
        15158.patch uploaded by mmichelson (license 60)
  Tested by: madkins
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@200361 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 main/channel.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/main/channel.c b/main/channel.c
index e2d1a84816..e4ab3d7809 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -3427,6 +3427,16 @@ int ast_indicate_data(struct ast_channel *chan, int _condition,
 	switch (condition) {
 	case AST_CONTROL_RINGING:
 		ts = ast_get_indication_tone(chan->zone, "ring");
+		/* It is common practice for channel drivers to return -1 if trying
+		 * to indicate ringing on a channel which is up. The idea is to let the
+		 * core generate the ringing inband. However, we don't want the
+		 * warning message about not being able to handle the specific indication
+		 * to print nor do we want ast_indicate_data to return an "error" for this
+		 * condition
+		 */
+		if (chan->_state == AST_STATE_UP) {
+			res = 0;
+		}
 		break;
 	case AST_CONTROL_BUSY:
 		ts = ast_get_indication_tone(chan->zone, "busy");
-- 
GitLab