summaryrefslogtreecommitdiff
path: root/apps/app_chanspy.c
diff options
context:
space:
mode:
authorRussell Bryant <russell@russellbryant.com>2009-06-26 21:48:41 +0000
committerRussell Bryant <russell@russellbryant.com>2009-06-26 21:48:41 +0000
commitbb1fc3e12f7f0d1fb1ed701a5cfc10a7fb7c7b7c (patch)
tree724e3c149c4a8582f55442a51936ae7f014654c9 /apps/app_chanspy.c
parent4021f7d71b1d15f86dc7ecbd9efed1160389888a (diff)
Add 's' option to ChanSpy, which makes the app exit when no channels are left to spy on.
(closes issue #14594) Reported by: JimDickenson Patches: chanspy.diff uploaded by JimDickenson (license 710) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@203842 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps/app_chanspy.c')
-rw-r--r--apps/app_chanspy.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/apps/app_chanspy.c b/apps/app_chanspy.c
index 98516cd89..876994b4e 100644
--- a/apps/app_chanspy.c
+++ b/apps/app_chanspy.c
@@ -135,6 +135,9 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<option name="o">
<para>Only listen to audio coming from this channel.</para>
</option>
+ <option name="s">
+ <para>Stop when no more channels are left to spy on.</para>
+ </option>
<option name="X">
<para>Allow the user to exit ChanSpy to a valid single digit
numeric extension in the current context or the context
@@ -266,6 +269,9 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<option name="o">
<para>Only listen to audio coming from this channel.</para>
</option>
+ <option name="s">
+ <para>Stop when there are no more extensions left to spy on.</para>
+ </option>
<option name="X">
<para>Allow the user to exit ChanSpy to a valid single digit
numeric extension in the current context or the context
@@ -349,6 +355,7 @@ enum {
OPTION_DTMF_EXIT = (1 << 14), /* Set DTMF to exit, added for DAHDIScan integration */
OPTION_DTMF_CYCLE = (1 << 15), /* Custom DTMF for cycling next avaliable channel, (default is '*') */
OPTION_DAHDI_SCAN = (1 << 16), /* Scan groups in DAHDIScan mode */
+ OPTION_STOP = (1 << 17),
};
enum {
@@ -373,6 +380,7 @@ AST_APP_OPTIONS(spy_opts, {
AST_APP_OPTION_ARG('r', OPTION_RECORD, OPT_ARG_RECORD),
AST_APP_OPTION_ARG('e', OPTION_ENFORCED, OPT_ARG_ENFORCED),
AST_APP_OPTION('o', OPTION_READONLY),
+ AST_APP_OPTION('s', OPTION_STOP),
AST_APP_OPTION('X', OPTION_EXIT),
AST_APP_OPTION('s', OPTION_NOTECH),
AST_APP_OPTION_ARG('n', OPTION_NAME, OPT_ARG_NAME),
@@ -956,6 +964,9 @@ static int common_exec(struct ast_channel *chan, struct ast_flags *flags,
if (res == -1 || ast_check_hangup(chan))
break;
+ if (ast_test_flag(flags, OPTION_STOP) && !next_autochan) {
+ break;
+ }
}
exit: