]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_stasis: Add progress indications to operations which perform media.
authorJoshua Colp <jcolp@digium.com>
Wed, 30 Apr 2014 12:41:55 +0000 (12:41 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 30 Apr 2014 12:41:55 +0000 (12:41 +0000)
This change fixes operations which did not account for the fact that they may
be executed on channels which have not been answered. These operations will
now indicate progress when invoked.

ASTERISK-23560 #close
ASTERISk-23560 #comment Reported by: Jan Svoboda

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

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

res/stasis/control.c

index 88ef8969dc9b3094df68b3a94ce9cbdce909c0f4..8802e8128e4eba9e36c80a0fc3bb9e7eba21a5e1 100644 (file)
@@ -444,6 +444,10 @@ static int app_control_dtmf(struct stasis_app_control *control,
 {
        RAII_VAR(struct stasis_app_control_dtmf_data *, dtmf_data, data, ast_free);
 
+       if (ast_channel_state(chan) != AST_STATE_UP) {
+               ast_indicate(chan, AST_CONTROL_PROGRESS);
+       }
+
        if (dtmf_data->before) {
                ast_safe_sleep(chan, dtmf_data->before);
        }
@@ -629,6 +633,10 @@ static int app_control_moh_start(struct stasis_app_control *control,
 {
        char *moh_class = data;
 
+       if (ast_channel_state(chan) != AST_STATE_UP) {
+               ast_indicate(chan, AST_CONTROL_PROGRESS);
+       }
+
        ast_moh_start(chan, moh_class, NULL);
 
        ast_free(moh_class);
@@ -661,6 +669,10 @@ void stasis_app_control_moh_stop(struct stasis_app_control *control)
 static int app_control_silence_start(struct stasis_app_control *control,
        struct ast_channel *chan, void *data)
 {
+       if (ast_channel_state(chan) != AST_STATE_UP) {
+               ast_indicate(chan, AST_CONTROL_PROGRESS);
+       }
+
        if (control->silgen) {
                /* We have a silence generator, but it may have been implicitly
                 * disabled by media actions (music on hold, playing media,