diff options
author | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-10-29 18:14:36 +0000 |
---|---|---|
committer | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-10-29 18:14:36 +0000 |
commit | 90d63f67afd40c087f60b7ea800bc284c1f24094 (patch) | |
tree | b5df730b3186015614f0d7e1fa7821f8ef5e1d8c | |
parent | 6ecfe392a3daf839c8fbe19e99c7e5d69448c36b (diff) |
Merged revisions 226532 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r226532 | file | 2009-10-29 15:13:42 -0300 (Thu, 29 Oct 2009) | 13 lines
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: http://svn.digium.com/svn/asterisk/branches/1.6.0@226533 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | channels/chan_local.c | 8 | ||||
-rw-r--r-- | doc/tex/localchannel.tex | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/channels/chan_local.c b/channels/chan_local.c index ae3f722cd..9b821a101 100644 --- a/channels/chan_local.c +++ b/channels/chan_local.c @@ -116,6 +116,7 @@ struct local_pvt { #define LOCAL_ALREADY_MASQED (1 << 2) /*!< Already masqueraded */ #define LOCAL_LAUNCHED_PBX (1 << 3) /*!< PBX was launched */ #define LOCAL_NO_OPTIMIZATION (1 << 4) /*!< Do not optimize using masquerading */ +#define LOCAL_MOH_PASSTHRU (1 << 6) /*!< Pass through music on hold start/stop frames */ static AST_LIST_HEAD_STATIC(locals, local_pvt); @@ -378,9 +379,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 { /* Queue up a frame representing the indication as a control frame */ @@ -640,6 +641,9 @@ static struct local_pvt *local_alloc(const char *data, int format) "to use the 'j' option to enable the jitterbuffer\n"); } } + if (strchr(opts, 'm')) { + ast_set_flag(tmp, LOCAL_MOH_PASSTHRU); + } } /* Look for a context */ diff --git a/doc/tex/localchannel.tex b/doc/tex/localchannel.tex index 528421e0b..c8f6efb62 100644 --- a/doc/tex/localchannel.tex +++ b/doc/tex/localchannel.tex @@ -27,6 +27,10 @@ audio that it receives from the channel that called the local channel. This is especially in the case of putting chan\_local in between an incoming SIP call and Asterisk applications, so that the incoming audio will be de-jittered. +Using the "m" option will cause chan_local to forward music on hold start and stop +requests. Normally chan_local acts on them and it is started or stopped on the +Local channel itself. + \subsection{Purpose} The Local channel construct can be used to establish dialing into any part of |