diff options
author | Joshua Colp <jcolp@digium.com> | 2009-10-29 18:13:42 +0000 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2009-10-29 18:13:42 +0000 |
commit | b9c370da86d4a73ea930d3364406e858adefa66b (patch) | |
tree | 1b9b5a693354ef4d76604687989b3fce3783ec2f /channels/chan_local.c | |
parent | 64e8fb465bfdac782e8afac076c4367d528525a1 (diff) |
Merged revisions 226531 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r226531 | file | 2009-10-29 15:11:26 -0300 (Thu, 29 Oct 2009) | 6 lines
Add an option to enabling passing music on hold start and stop requests through instead of
acting on them in chan_local.
(closes issue #14709)
Reported by: dimas
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@226532 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_local.c')
-rw-r--r-- | channels/chan_local.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/channels/chan_local.c b/channels/chan_local.c index 331df9c20..c699a5cba 100644 --- a/channels/chan_local.c +++ b/channels/chan_local.c @@ -125,6 +125,7 @@ struct local_pvt { #define LOCAL_LAUNCHED_PBX (1 << 3) /*!< PBX was launched */ #define LOCAL_NO_OPTIMIZATION (1 << 4) /*!< Do not optimize using masquerading */ #define LOCAL_BRIDGE (1 << 5) /*!< Report back the "true" channel as being bridged to */ +#define LOCAL_MOH_PASSTHRU (1 << 6) /*!< Pass through music on hold start/stop frames */ static AST_LIST_HEAD_STATIC(locals, local_pvt); @@ -412,9 +413,9 @@ static int local_indicate(struct ast_channel *ast, int condition, const void *da return -1; /* If this is an MOH hold or unhold, do it on the Local channel versus real channel */ - if (condition == AST_CONTROL_HOLD) { + if (!ast_test_flag(p, LOCAL_MOH_PASSTHRU) && condition == AST_CONTROL_HOLD) { ast_moh_start(ast, data, NULL); - } else if (condition == AST_CONTROL_UNHOLD) { + } else if (!ast_test_flag(p, LOCAL_MOH_PASSTHRU) && condition == AST_CONTROL_UNHOLD) { ast_moh_stop(ast); } else if (condition == AST_CONTROL_CONNECTED_LINE || condition == AST_CONTROL_REDIRECTING) { struct ast_channel *this_channel; @@ -759,6 +760,9 @@ static struct local_pvt *local_alloc(const char *data, int format) if (strchr(opts, 'b')) { ast_set_flag(tmp, LOCAL_BRIDGE); } + if (strchr(opts, 'm')) { + ast_set_flag(tmp, LOCAL_MOH_PASSTHRU); + } } /* Look for a context */ |