aboutsummaryrefslogtreecommitdiffstats
path: root/pbx.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-09-14 22:35:53 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-09-14 22:35:53 +0000
commitb0108d7b5515f128b4ed25ea2adc30c36a03775d (patch)
tree0f872bb5b3ed0cb23ecdeca32d9dc71aa5e6fa22 /pbx.c
parent956cbf759ec4a258d47a8c4839da3ad52156f941 (diff)
Make sure patterns are always last (bug #2435)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3777 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx.c')
-rwxr-xr-xpbx.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/pbx.c b/pbx.c
index dd8abbd4a..2bc05ff5d 100755
--- a/pbx.c
+++ b/pbx.c
@@ -3830,7 +3830,13 @@ int ast_add_extension2(struct ast_context *con,
}
e = con->root;
while(e) {
- res= strcmp(e->exten, extension);
+ /* Make sure patterns are always last! */
+ if ((e->exten[0] != '_') && (extension[0] == '_'))
+ res = -1;
+ else if ((e->exten[0] == '_') && (extension[0] != '_'))
+ res = 1;
+ else
+ res= strcmp(e->exten, extension);
if (!res) {
if (!e->matchcid && !tmp->matchcid)
res = 0;