]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
ARI: Fix implicit answer when playback is initiated on unanswered channel
authorMatthew Jordan <mjordan@digium.com>
Thu, 21 Aug 2014 15:22:53 +0000 (15:22 +0000)
committerMatthew Jordan <mjordan@digium.com>
Thu, 21 Aug 2014 15:22:53 +0000 (15:22 +0000)
When issuing a POST /channels/{channel_id}/play on a channel that is not
yet answered, ARI is supposed to:
* Queue up an AST_CONTROL_PROGRESS on the channel
* Start up the playback of the media

Instead, we sneak an answer on the channel right before starting playing media.

This is due to ARI's usage of control_streamfile. This function implicitly
answers the channel (and doesn't give ARI the option to stop it). The answering
of the channel here is probably unnecessary:
* app_voicemail, by far the biggest consumer of this function, always answers
  the channels anyway
* control stream file (in res_agi) and ControlPlayback probably shouldn't be
  implicitly answering the channel. Answering should not be tied directly to
  playing back media.

As it turns out, the answering of the channel here is pretty old:
356042    twilson       if (ast_channel_state(chan) != AST_STATE_UP) {
  3087      anthm               res = ast_answer(chan);
180259   tilghman       }

(As in, ancient?)

Note that others ran into this problem and commented about it on various
mailing lists.

Review: https://reviewboard.asterisk.org/r/3907/

ASTERISK-24229 #close
Reported by: Matt Jordan

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

UPGRADE.txt
main/app.c

index d81332a5a7bd9c55a9c69d2cb86119581ed4ab1c..777a40520947a1dbf189f7c2da808bc88256201a 100644 (file)
 ===
 ===========================================================
 
+From 12.5.0 to 12.6.0:
+
+ControlPlayback:
+ - The ControlPlayback and 'control stream file' AGI command will no longer
+   implicitly answer the channel. If you do not answer the channel prior to
+   using either this application or AGI command, you must send Progress
+   first.
+
 From 12.4.0 to 12.5.0:
 
 ARI:
index 7cc5c65d5c7fcdb1cfafe1ca8d79fdb3a60b55df..1bf714522e4b4e0dbcc9a012520a721c97bf8c4e 100644 (file)
@@ -960,9 +960,6 @@ static int control_streamfile(struct ast_channel *chan,
                        strcat(breaks, restart);
                }
        }
-       if (ast_channel_state(chan) != AST_STATE_UP) {
-               res = ast_answer(chan);
-       }
 
        if ((end = strchr(file, ':'))) {
                if (!strcasecmp(end, ":end")) {