]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 204948 via svnmerge from
authorKevin P. Fleming <kpfleming@digium.com>
Mon, 6 Jul 2009 13:40:59 +0000 (13:40 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Mon, 6 Jul 2009 13:40:59 +0000 (13:40 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

........
  r204948 | kpfleming | 2009-07-06 08:38:29 -0500 (Mon, 06 Jul 2009) | 7 lines

  Improve handling of AST_CONTROL_T38 and AST_CONTROL_T38_PARAMETERS for non-T.38-capable channels.

  This change allows applications that request T.38 negotiation on a channel that
  does not support it to get the proper indication that it is not supported, rather
  than thinking that negotiation was started when it was not.
........

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@204950 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/channel.c

index 379866fc3fa1faecc50a11756e22bab5956084b0..17a489fe6402ab4fa69617d25ed186506205bea8 100644 (file)
@@ -3079,7 +3079,7 @@ int ast_indicate_data(struct ast_channel *chan, int _condition,
 
        ast_channel_unlock(chan);
 
-       if (chan->tech->indicate && !res) {
+       if (!res) {
                /* The channel driver successfully handled this indication */
                if (is_visible_indication(condition)) {
                        chan->visible_indication = condition;
@@ -3101,6 +3101,15 @@ int ast_indicate_data(struct ast_channel *chan, int _condition,
 
        /* Handle conditions that we have tones for. */
        switch (condition) {
+       case AST_CONTROL_T38:
+       case AST_CONTROL_T38_PARAMETERS:
+               /* there is no way to provide 'default' behavior for these
+                * control frames, so we need to return failure, but there
+                * is also no value in the log message below being emitted
+                * since failure to handle these frames is not an 'error'
+                * so just return right now.
+                */
+               return -1;
        case AST_CONTROL_RINGING:
                ts = ast_get_indication_tone(chan->zone, "ring");
                /* It is common practice for channel drivers to return -1 if trying
@@ -3136,8 +3145,6 @@ int ast_indicate_data(struct ast_channel *chan, int _condition,
        case AST_CONTROL_RING:
        case AST_CONTROL_HOLD:
        case AST_CONTROL_UNHOLD:
-       case AST_CONTROL_T38:
-       case AST_CONTROL_T38_PARAMETERS:
                /* Nothing left to do for these. */
                res = 0;
                break;