mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 20:20:07 +00:00
add a global option to disable priority jumping in applications (when they get updated), settable in extensions.conf
change app_dial to use 'j' to _ENABLE_ priority jumping if it has been globally disabled git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6224 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -120,7 +120,7 @@ static char *descrip =
|
|||||||
" * LIMIT_WARNING_FILE File to play as warning if 'y' is defined.\n"
|
" * LIMIT_WARNING_FILE File to play as warning if 'y' is defined.\n"
|
||||||
" 'timeleft' is a special sound macro to auto-say the time \n"
|
" 'timeleft' is a special sound macro to auto-say the time \n"
|
||||||
" left and is the default.\n"
|
" left and is the default.\n"
|
||||||
" 'j' -- Do not jump to n+101 if all of the channels were busy.\n\n"
|
" 'j' -- Jump to n+101 if all of the channels were busy.\n\n"
|
||||||
" In addition to transferring the call, a call may be parked and then picked\n"
|
" In addition to transferring the call, a call may be parked and then picked\n"
|
||||||
"up by another user.\n"
|
"up by another user.\n"
|
||||||
" The optional URL will be sent to the called party if the channel supports it.\n"
|
" The optional URL will be sent to the called party if the channel supports it.\n"
|
||||||
@@ -271,7 +271,7 @@ static void senddialevent(struct ast_channel *src, struct ast_channel *dst)
|
|||||||
dst->uniqueid);
|
dst->uniqueid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localuser *outgoing, int *to, struct ast_flags *peerflags, int *sentringing, char *status, size_t statussize, int busystart, int nochanstart, int congestionstart, int nojump, int *result)
|
static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localuser *outgoing, int *to, struct ast_flags *peerflags, int *sentringing, char *status, size_t statussize, int busystart, int nochanstart, int congestionstart, int priority_jump, int *result)
|
||||||
{
|
{
|
||||||
struct localuser *o;
|
struct localuser *o;
|
||||||
int found;
|
int found;
|
||||||
@@ -326,9 +326,8 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localu
|
|||||||
strcpy(status, "CONGESTION");
|
strcpy(status, "CONGESTION");
|
||||||
else if (numnochan)
|
else if (numnochan)
|
||||||
strcpy(status, "CHANUNAVAIL");
|
strcpy(status, "CHANUNAVAIL");
|
||||||
/* See if there is a special busy message */
|
if (option_priority_jumping || priority_jump)
|
||||||
if (!nojump && ast_exists_extension(in, in->context, in->exten, in->priority + 101, in->cid.cid_num))
|
ast_goto_if_exists(in, in->context, in->exten, in->priority + 101);
|
||||||
in->priority+=100;
|
|
||||||
} else {
|
} else {
|
||||||
if (option_verbose > 2)
|
if (option_verbose > 2)
|
||||||
ast_verbose( VERBOSE_PREFIX_2 "No one is available to answer at this time (%d:%d/%d/%d)\n", numlines, numbusy, numcongestion, numnochan);
|
ast_verbose( VERBOSE_PREFIX_2 "No one is available to answer at this time (%d:%d/%d/%d)\n", numlines, numbusy, numcongestion, numnochan);
|
||||||
@@ -670,7 +669,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
|
|||||||
time_t start_time, answer_time, end_time;
|
time_t start_time, answer_time, end_time;
|
||||||
struct ast_app *app = NULL;
|
struct ast_app *app = NULL;
|
||||||
char *dblgoto = NULL;
|
char *dblgoto = NULL;
|
||||||
int nojump = 0;
|
int priority_jump = 0;
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
ast_log(LOG_WARNING, "Dial requires an argument (technology1/number1&technology2/number2...|optional timeout|options)\n");
|
ast_log(LOG_WARNING, "Dial requires an argument (technology1/number1&technology2/number2...|optional timeout|options)\n");
|
||||||
@@ -925,7 +924,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
|
|||||||
} else if (strchr(transfer, 'C')) {
|
} else if (strchr(transfer, 'C')) {
|
||||||
resetcdr = 1;
|
resetcdr = 1;
|
||||||
} else if (strchr(transfer, 'j')) {
|
} else if (strchr(transfer, 'j')) {
|
||||||
nojump = 1;
|
priority_jump = 1;
|
||||||
}
|
}
|
||||||
if (strchr(transfer, 'n')) {
|
if (strchr(transfer, 'n')) {
|
||||||
no_save_intros = 1;
|
no_save_intros = 1;
|
||||||
@@ -1238,7 +1237,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
|
|||||||
strcpy(status, "CHANUNAVAIL");
|
strcpy(status, "CHANUNAVAIL");
|
||||||
|
|
||||||
time(&start_time);
|
time(&start_time);
|
||||||
peer = wait_for_answer(chan, outgoing, &to, peerflags, &sentringing, status, sizeof(status), numbusy, numnochan, numcongestion, nojump, &result);
|
peer = wait_for_answer(chan, outgoing, &to, peerflags, &sentringing, status, sizeof(status), numbusy, numnochan, numcongestion, priority_jump, &result);
|
||||||
|
|
||||||
if (!peer) {
|
if (!peer) {
|
||||||
if (result) {
|
if (result) {
|
||||||
|
@@ -100,6 +100,7 @@ int option_reconnect = 0;
|
|||||||
int option_transcode_slin = 1;
|
int option_transcode_slin = 1;
|
||||||
int option_maxcalls = 0;
|
int option_maxcalls = 0;
|
||||||
int option_dontwarn = 0;
|
int option_dontwarn = 0;
|
||||||
|
int option_priority_jumping = 1;
|
||||||
int fully_booted = 0;
|
int fully_booted = 0;
|
||||||
char record_cache_dir[AST_CACHE_DIR_LEN] = AST_TMP_DIR;
|
char record_cache_dir[AST_CACHE_DIR_LEN] = AST_TMP_DIR;
|
||||||
char debug_filename[AST_FILENAME_MAX] = "";
|
char debug_filename[AST_FILENAME_MAX] = "";
|
||||||
|
@@ -44,6 +44,14 @@ autofallthrough=yes
|
|||||||
;
|
;
|
||||||
clearglobalvars=no
|
clearglobalvars=no
|
||||||
;
|
;
|
||||||
|
; If priorityjumping is set to 'yes', then applications that support
|
||||||
|
; 'jumping' to a different priority based on the result of their operations
|
||||||
|
; will do so (this is backwards compatible behavior with pre-1.2 releases
|
||||||
|
; of Asterisk). Individual applications can also be requested to do this
|
||||||
|
; by passing a 'j' option in their arguments.
|
||||||
|
;
|
||||||
|
priorityjumping=no
|
||||||
|
;
|
||||||
; You can include other config files, use the #include command (without the ';')
|
; You can include other config files, use the #include command (without the ';')
|
||||||
; Note that this is different from the "include" command that includes contexts within
|
; Note that this is different from the "include" command that includes contexts within
|
||||||
; other contexts. The #include command works in all asterisk configuration files.
|
; other contexts. The #include command works in all asterisk configuration files.
|
||||||
|
@@ -35,6 +35,7 @@ extern int option_timestamp;
|
|||||||
extern int option_transcode_slin;
|
extern int option_transcode_slin;
|
||||||
extern int option_maxcalls;
|
extern int option_maxcalls;
|
||||||
extern int option_dontwarn;
|
extern int option_dontwarn;
|
||||||
|
extern int option_priority_jumping;
|
||||||
extern char defaultlanguage[];
|
extern char defaultlanguage[];
|
||||||
extern time_t ast_startuptime;
|
extern time_t ast_startuptime;
|
||||||
extern time_t ast_lastreloadtime;
|
extern time_t ast_lastreloadtime;
|
||||||
|
@@ -1633,15 +1633,15 @@ static int pbx_load_module(void)
|
|||||||
if (cfg) {
|
if (cfg) {
|
||||||
/* Use existing config to populate the PBX table */
|
/* Use existing config to populate the PBX table */
|
||||||
static_config = ast_true(ast_variable_retrieve(cfg, "general",
|
static_config = ast_true(ast_variable_retrieve(cfg, "general",
|
||||||
"static"));
|
"static"));
|
||||||
write_protect_config = ast_true(ast_variable_retrieve(cfg, "general",
|
write_protect_config = ast_true(ast_variable_retrieve(cfg, "general",
|
||||||
"writeprotect"));
|
"writeprotect"));
|
||||||
|
|
||||||
autofallthrough_config = ast_true(ast_variable_retrieve(cfg, "general",
|
autofallthrough_config = ast_true(ast_variable_retrieve(cfg, "general",
|
||||||
"autofallthrough"));
|
"autofallthrough"));
|
||||||
|
|
||||||
clearglobalvars_config = ast_true(ast_variable_retrieve(cfg, "general",
|
clearglobalvars_config = ast_true(ast_variable_retrieve(cfg, "general",
|
||||||
"clearglobalvars"));
|
"clearglobalvars"));
|
||||||
|
option_priority_jumping = ast_true(ast_variable_retrieve(cfg, "general",
|
||||||
|
"priorityjumping"));
|
||||||
|
|
||||||
v = ast_variable_browse(cfg, "globals");
|
v = ast_variable_browse(cfg, "globals");
|
||||||
while(v) {
|
while(v) {
|
||||||
|
Reference in New Issue
Block a user