From 6c6bd28308a8f01c157a47f51a35f244edee432f Mon Sep 17 00:00:00 2001 From: James Golovich Date: Wed, 10 Mar 2004 03:51:59 +0000 Subject: [PATCH] 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: https://origsvn.digium.com/svn/asterisk/trunk@2383 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_zapscan.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/apps/app_zapscan.c b/apps/app_zapscan.c index 54db27df04..502aa5a348 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;