Dial janitor patch (bug #5613)
authorMark Spencer <markster@digium.com>
Sun, 6 Nov 2005 05:00:42 +0000 (05:00 +0000)
committerMark Spencer <markster@digium.com>
Sun, 6 Nov 2005 05:00:42 +0000 (05:00 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6970 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_dial.c

index 7778ead..5b61928 100755 (executable)
@@ -70,11 +70,7 @@ static char *descrip =
 "If a timeout is not specified, the Dial application will wait indefinitely\n"
 "until either one of the called channels answers, the user hangs up, or all\n"
 "channels return busy or error. In general, the dialer will return 0 if it\n"
-"was unable to place the call, or the timeout expired. However, if all\n"
-"channels were busy, and there exists an extension with priority n+101 (where\n"
-"n is the priority of the dialer instance), then it will be the next\n"
-"executed extension (this allows you to setup different behavior on busy from\n"
-"no-answer).\n"
+"was unable to place the call, or the timeout expired. \n"
 "  For the Privacy and Screening Modes, the DIALSTATUS variable will be set to DONTCALL, \n"
 "if the called party chooses to send the calling party to the 'Go Away' script, and \n"
 "the DIALSTATUS variable will be set to TORTURE, if the called party wants to send the caller to \n"
@@ -116,7 +112,7 @@ static char *descrip =
 "                      Also, the macro can set the MACRO_RESULT variable to do the following:\n"
 "                     -- ABORT - Hangup both legs of the call.\n"
 "                     -- CONGESTION - Behave as if line congestion was encountered.\n"
-"                     -- BUSY - Behave as if a busy signal was encountered. (n+101)\n"
+"                     -- BUSY - Behave as if a busy signal was encountered. (n+101 only if those options are set)\n"
 "                     -- CONTINUE - Hangup the called party and continue on in the dialplan.\n"
 "                     -- GOTO:<context>^<exten>^<priority> - Transfer the call.\n"
 "      'n' -- modifier for screen/privacy mode. No intros are to be saved in the priv-callerintros dir.\n"
@@ -1421,9 +1417,12 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                                if ((macro_result = pbx_builtin_getvar_helper(peer, "MACRO_RESULT"))) {
                                        if (!strcasecmp(macro_result, "BUSY")) {
                                                ast_copy_string(status, macro_result, sizeof(status));
-                                               if (!ast_goto_if_exists(chan, NULL, NULL, chan->priority + 101)) {
+                                               if (option_priority_jumping || ast_test_flag(&opts, OPT_PRIORITY_JUMP)) {
+                                                       if (!ast_goto_if_exists(chan, NULL, NULL, chan->priority + 101)) {
+                                                               ast_set_flag(peerflags, OPT_GO_ON);
+                                                       }
+                                               } else
                                                        ast_set_flag(peerflags, OPT_GO_ON);
-                                               }
                                                res = -1;
                                        }
                                        else if (!strcasecmp(macro_result, "CONGESTION") || !strcasecmp(macro_result, "CHANUNAVAIL")) {