Merged revisions 200360 via svnmerge from
authorMark Michelson <mmichelson@digium.com>
Fri, 12 Jun 2009 19:07:51 +0000 (19:07 +0000)
committerMark Michelson <mmichelson@digium.com>
Fri, 12 Jun 2009 19:07:51 +0000 (19:07 +0000)
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

index e2d1a84..e4ab3d7 100644 (file)
@@ -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");