summaryrefslogtreecommitdiff
path: root/apps/app_dial.c
diff options
context:
space:
mode:
authorLuigi Rizzo <rizzo@icir.org>2006-04-19 18:15:20 +0000
committerLuigi Rizzo <rizzo@icir.org>2006-04-19 18:15:20 +0000
commitb9f3e4e0f3fe0cebcf83c7c1fd1062c61c900d2e (patch)
treeddfd1679dc42527f1ea5fdc12ee86c35cc2441e4 /apps/app_dial.c
parentbd01d66909a8901c7a19b51af163e2187490a7af (diff)
move a replicated block of code in the one place where it belongs.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@21596 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps/app_dial.c')
-rw-r--r--apps/app_dial.c61
1 files changed, 13 insertions, 48 deletions
diff --git a/apps/app_dial.c b/apps/app_dial.c
index 637dbc0c8..99bacf017 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -1238,7 +1238,15 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
res2 = ast_play_and_wait(peer, "vm-sorry");
}
- switch(res2) {
+ if (ast_test_flag(&opts, OPT_MUSICBACK)) {
+ ast_moh_stop(chan);
+ } else if (ast_test_flag(&opts, OPT_RINGBACK)) {
+ ast_indicate(chan, -1);
+ sentringing=0;
+ }
+ ast_autoservice_stop(chan);
+
+ switch (res2) {
case '1':
if( ast_test_flag(&opts, OPT_PRIVACY) ) {
if (option_verbose > 2)
@@ -1254,13 +1262,6 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
opt_args[OPT_ARG_PRIVACY], privcid);
ast_privacy_set(opt_args[OPT_ARG_PRIVACY], privcid, AST_PRIVACY_DENY);
}
- if (ast_test_flag(&opts, OPT_MUSICBACK)) {
- ast_moh_stop(chan);
- } else if (ast_test_flag(&opts, OPT_RINGBACK)) {
- ast_indicate(chan, -1);
- sentringing=0;
- }
- res2 = ast_autoservice_stop(chan);
ast_hangup(peer); /* hang up on the callee -- he didn't want to talk anyway! */
res=0;
goto out;
@@ -1274,13 +1275,6 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
ast_copy_string(status, "TORTURE", sizeof(status));
res = 0;
- if (ast_test_flag(&opts, OPT_MUSICBACK)) {
- ast_moh_stop(chan);
- } else if (ast_test_flag(&opts, OPT_RINGBACK)) {
- ast_indicate(chan, -1);
- sentringing=0;
- }
- res2 = ast_autoservice_stop(chan);
ast_hangup(peer); /* hang up on the caller -- he didn't want to talk anyway! */
goto out; /* Is this right? */
case '4':
@@ -1293,13 +1287,6 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
ast_copy_string(status, "DONTCALL", sizeof(status));
res = 0;
- if (ast_test_flag(&opts, OPT_MUSICBACK)) {
- ast_moh_stop(chan);
- } else if (ast_test_flag(&opts, OPT_RINGBACK)) {
- ast_indicate(chan, -1);
- sentringing=0;
- }
- res2 = ast_autoservice_stop(chan);
ast_hangup(peer); /* hang up on the caller -- he didn't want to talk anyway! */
goto out; /* Is this right? */
case '5':
@@ -1308,13 +1295,6 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
ast_verbose(VERBOSE_PREFIX_3 "--Set privacy database entry %s/%s to ALLOW\n",
opt_args[OPT_ARG_PRIVACY], privcid);
ast_privacy_set(opt_args[OPT_ARG_PRIVACY], privcid, AST_PRIVACY_ALLOW);
- if (ast_test_flag(&opts, OPT_MUSICBACK)) {
- ast_moh_stop(chan);
- } else if (ast_test_flag(&opts, OPT_RINGBACK)) {
- ast_indicate(chan, -1);
- sentringing=0;
- }
- res2 = ast_autoservice_stop(chan);
ast_hangup(peer); /* hang up on the caller -- he didn't want to talk anyway! */
res=0;
goto out;
@@ -1325,30 +1305,15 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
or,... put 'em thru to voicemail. */
/* since the callee may have hung up, let's do the voicemail thing, no database decision */
ast_log(LOG_NOTICE, "privacy: no valid response from the callee. Sending the caller to voicemail, the callee isn't responding\n");
- if (ast_test_flag(&opts, OPT_MUSICBACK)) {
- ast_moh_stop(chan);
- } else if (ast_test_flag(&opts, OPT_RINGBACK)) {
- ast_indicate(chan, -1);
- sentringing=0;
- }
- res2 = ast_autoservice_stop(chan);
ast_hangup(peer); /* hang up on the callee -- he didn't want to talk anyway! */
res=0;
goto out;
}
- /* XXX we only reach this point in case '1', but all other cases are
- * also doing the same thing inline, so probably this code should
- * be done once before the switch() above.
- */
- if (ast_test_flag(&opts, OPT_MUSICBACK)) {
- ast_moh_stop(chan);
- } else if (ast_test_flag(&opts, OPT_RINGBACK)) {
- ast_indicate(chan, -1);
- sentringing=0;
- }
- res2 = ast_autoservice_stop(chan);
- /* ---- */
+ /* XXX once again, this path is only taken in the case '1', so it could be
+ * moved there, although i am not really sure that this is correct - maybe
+ * the check applies to other cases as well.
+ */
/* if the intro is NOCALLERID, then there's no reason to leave it on disk, it'll
just clog things up, and it's not useful information, not being tied to a CID */
if( strncmp(privcid,"NOCALLERID",10) == 0 || ast_test_flag(&opts, OPT_SCREEN_NOINTRO) ) {