From: Steve Murphy Date: Tue, 1 Apr 2008 22:45:10 +0000 (+0000) Subject: Bumped across another test set for the new exten pattern matcher, which revealed... X-Git-Tag: 1.6.2.0-beta1~2566 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=da41d47a83cc42bb767516a676fa8b9998bec0f1;p=thirdparty%2Fasterisk.git Bumped across another test set for the new exten pattern matcher, which revealed a problem with the CANMATCH/MATCHMORE modes. Direct matches were getting in the way. Fixed. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@112357 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/pbx.c b/main/pbx.c index 19c8f05cb8..4a7b605763 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -1015,9 +1015,11 @@ static void new_find_extension(const char *str, struct scoreboard *score, struct if (p->x[1] == 0 && *str >= '2' && *str <= '9' ) { #define NEW_MATCHER_CHK_MATCH \ if (p->exten && !(*(str+1))) { /* if a shorter pattern matches along the way, might as well report it */ \ - update_scoreboard(score, length+1, spec+p->specificity, p->exten,0,callerid, p->deleted, p); \ - if (!p->deleted) \ - return; /* the first match, by definition, will be the best, because of the sorted tree */ \ + if (action == E_MATCH) { /* if in CANMATCH/MATCHMORE, don't let matches get in the way */ \ + update_scoreboard(score, length+1, spec+p->specificity, p->exten,0,callerid, p->deleted, p); \ + if (!p->deleted) \ + return; /* the first match, by definition, will be the best, because of the sorted tree */ \ + } \ } #define NEW_MATCHER_RECURSE \