diff --git a/apps/app_chanspy.c b/apps/app_chanspy.c index a99c03216f..2d781fc77c 100644 --- a/apps/app_chanspy.c +++ b/apps/app_chanspy.c @@ -377,6 +377,7 @@ static int common_exec(struct ast_channel *chan, const struct ast_flags *flags, int res; char *ptr; int num; + int num_spyed_upon = 1; if (chan->_state != AST_STATE_UP) ast_answer(chan); @@ -386,7 +387,7 @@ static int common_exec(struct ast_channel *chan, const struct ast_flags *flags, waitms = 100; for (;;) { - if (!ast_test_flag(flags, OPTION_QUIET)) { + if (!ast_test_flag(flags, OPTION_QUIET) && num_spyed_upon) { res = ast_streamfile(chan, "beep", chan->language); if (!res) res = ast_waitstream(chan, ""); @@ -405,6 +406,7 @@ static int common_exec(struct ast_channel *chan, const struct ast_flags *flags, /* reset for the next loop around, unless overridden later */ waitms = 100; peer = prev = next = NULL; + num_spyed_upon = 0; for (peer = next_channel(peer, spec, exten, context); peer; @@ -470,7 +472,8 @@ static int common_exec(struct ast_channel *chan, const struct ast_flags *flags, waitms = 5000; res = channel_spy(chan, peer, &volfactor, fd, flags); - + num_spyed_upon++; + if (res == -1) { break; } else if (res > 1 && spec) {