From 7e3e619497db5bf939c16009e7a1e69d372d01a6 Mon Sep 17 00:00:00 2001 From: "Kevin P. Fleming" Date: Sun, 3 Apr 2005 22:24:17 +0000 Subject: [PATCH] further thought says '!' is a better early-match wildcard (bug #3889, take 2) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5372 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- configs/extensions.conf.sample | 2 +- pbx.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/configs/extensions.conf.sample b/configs/extensions.conf.sample index b0768d84b5..f53e3a90f6 100755 --- a/configs/extensions.conf.sample +++ b/configs/extensions.conf.sample @@ -69,7 +69,7 @@ TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0) ; [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9) ; . - wildcard, matches anything remaining (e.g. _9011. matches ; anything starting with 9011 excluding 9011 itself) -; + - wildcard, causes the matching process to complete as soon as +; ! - wildcard, causes the matching process to complete as soon as ; it can unambiguously determine that no other matches are possible ; ; For example the extension _NXXXXXX would match normal 7 digit dialings, diff --git a/pbx.c b/pbx.c index 8522b470a4..9bdc5d5bfd 100755 --- a/pbx.c +++ b/pbx.c @@ -633,7 +633,7 @@ static void pbx_destroy(struct ast_pbx *p) case '.':\ /* Must match */\ return 1;\ - case '+':\ + case '!':\ /* Early match */\ return 2;\ case ' ':\ @@ -648,8 +648,8 @@ static void pbx_destroy(struct ast_pbx *p) data++;\ pattern++;\ }\ - /* If we ran off the end of the data and the pattern ends in '+', match */\ - if (match && !*data && (*pattern == '+'))\ + /* If we ran off the end of the data and the pattern ends in '!', match */\ + if (match && !*data && (*pattern == '!'))\ return 2;\ } @@ -774,7 +774,7 @@ static struct ast_exten *pbx_find_extension(struct ast_channel *chan, struct ast (!eroot->matchcid || matchcid(eroot->cidmatch, callerid))) { if (action == HELPER_MATCHMORE && match == 2 && !earlymatch) { - /* It matched an extension ending in a '+' wildcard + /* It matched an extension ending in a '!' wildcard So ignore it for now, unless there's a better match */ earlymatch = eroot; } else {