aboutsummaryrefslogtreecommitdiffstats
path: root/pbx
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-10-02 20:43:16 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-10-02 20:43:16 +0000
commit54c7235cd7328bb4661dad734e6f698f4dba6b97 (patch)
tree35672c25eaa55ce3b2e7a9543964b4100e90751e /pbx
parent3ac9f58b445c0b72bf82ec74163b9858b14c6a3d (diff)
Allow "n" or "next" and "s" or "same" in dialplan logic priorities
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3885 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx')
-rwxr-xr-xpbx/pbx_config.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c
index b067e2fe4..7bc449cd6 100755
--- a/pbx/pbx_config.c
+++ b/pbx/pbx_config.c
@@ -3,9 +3,9 @@
*
* Populate and remember extensions from static config file
*
- * Copyright (C) 1999, Mark Spencer
+ * Copyright (C) 1999-2004, Digium, Inc.
*
- * Mark Spencer <markster@linux-support.net>
+ * Mark Spencer <markster@digium.com>
*
* This program is free software, distributed under the terms of
* the GNU General Public License
@@ -1618,6 +1618,7 @@ static int pbx_load_module(void)
struct ast_context *con;
char *start, *end;
char realvalue[256];
+ int lastpri = -2;
cfg = ast_load(config);
if (cfg) {
@@ -1658,7 +1659,17 @@ static int pbx_load_module(void)
pri="";
if (!strcmp(pri,"hint"))
ipri=PRIORITY_HINT;
- else {
+ else if (!strcmp(pri, "next") || !strcmp(pri, "n")) {
+ if (lastpri > -2)
+ ipri = lastpri + 1;
+ else
+ ast_log(LOG_WARNING, "Can't use 'next' priority on the first entry!\n");
+ } else if (!strcmp(pri, "same") || !strcmp(pri, "s")) {
+ if (lastpri > -2)
+ ipri = lastpri;
+ else
+ ast_log(LOG_WARNING, "Can't use 'same' priority on the first entry!\n");
+ } else {
if (sscanf(pri, "%i", &ipri) != 1) {
ast_log(LOG_WARNING, "Invalid priority '%s' at line %d\n", pri, v->lineno);
ipri = 0;
@@ -1700,6 +1711,7 @@ static int pbx_load_module(void)
while(*appl && (*appl < 33)) appl++;
pbx_substitute_variables_helper(NULL, ext, realext, sizeof(realext) - 1);
if (ipri) {
+ lastpri = ipri;
if (ast_add_extension2(con, 0, realext, ipri, cidmatch, appl, strdup(data), FREE, registrar)) {
ast_log(LOG_WARNING, "Unable to register extension at line %d\n", v->lineno);
}