diff options
author | citats <citats@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-03-10 03:51:59 +0000 |
---|---|---|
committer | citats <citats@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-03-10 03:51:59 +0000 |
commit | 0c5e4952826945ac830b35481a35574a4fc02c52 (patch) | |
tree | bdca37dc8c85210d9d04668f0ca7555529e398f9 /apps/app_zapscan.c | |
parent | a9115edb4ef2175714adbccf5219e72841ae394e (diff) |
Make ZapScan exit when '*' is pressed. Has the side effect of making
the app exit when the channel is hungup which wasn't happening before
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2383 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps/app_zapscan.c')
-rwxr-xr-x | apps/app_zapscan.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/apps/app_zapscan.c b/apps/app_zapscan.c index 54db27df0..502aa5a34 100755 --- a/apps/app_zapscan.c +++ b/apps/app_zapscan.c @@ -43,8 +43,8 @@ static char *app = "ZapScan"; static char *synopsis = "Scan Zap channels to monitor calls"; static char *descrip = -" ZapScan allows a call center manager to monitor\n" -"phone conversations in a convenient way."; +" ZapScan allows a call center manager to monitor Zap channels in\n" +"a convenient way. Use '#' to select the next channel and use '*' to exit\n"; STANDARD_LOCAL_USER; @@ -191,6 +191,9 @@ zapretry: if ((f->frametype == AST_FRAME_DTMF) && (f->subclass == '#')) { ret = 0; break; + } else if ((f->frametype == AST_FRAME_DTMF) && (f->subclass == '*')) { + ret = -1; + break; } else if (fd != chan->fds[0]) { if (f->frametype == AST_FRAME_VOICE) { if (f->subclass == AST_FORMAT_ULAW) { @@ -245,6 +248,7 @@ static int conf_exec(struct ast_channel *chan, void *data) int confno = 0; char confstr[80], *tmp; struct ast_channel *tempchan = NULL, *lastchan = NULL; + struct ast_frame *f; LOCAL_USER_ADD(u); @@ -252,6 +256,14 @@ static int conf_exec(struct ast_channel *chan, void *data) ast_answer(chan); for (;;) { + f = ast_read(chan); + if (!f || ast_check_hangup(chan)) + break; + if ((f->frametype == AST_FRAME_DTMF) && (f->subclass == '*')) { + ast_frfree(f); + break; + } + ast_frfree(f); tempchan = ast_channel_walk(tempchan); if ( !tempchan && !lastchan ) break; |