]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 200361 via svnmerge from
authorMark Michelson <mmichelson@digium.com>
Fri, 12 Jun 2009 19:08:34 +0000 (19:08 +0000)
committerMark Michelson <mmichelson@digium.com>
Fri, 12 Jun 2009 19:08:34 +0000 (19:08 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

................
  r200361 | mmichelson | 2009-06-12 14:07:51 -0500 (Fri, 12 Jun 2009) | 16 lines

  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/branches/1.6.1@200363 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/channel.c

index 1e908533dd411e2ce6ef752fb1c203f0748cf654..f13f65053e8678937da762de7438e6863eae975c 100644 (file)
@@ -3057,6 +3057,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");