more small simplifications
[asterisk/asterisk.git] / pbx.c
diff --git a/pbx.c b/pbx.c
index fd1b4f5..f64616a 100644 (file)
--- a/pbx.c
+++ b/pbx.c
@@ -4183,15 +4183,16 @@ int ast_add_extension2(struct ast_context *con,
        tmp->registrar = registrar;
        
        ast_mutex_lock(&con->lock);
-       for (e = con->root; e; e = e->next) {
-               /* Make sure patterns are always last! */
-               if ((e->exten[0] != '_') && (extension[0] == '_'))
+       for (e = con->root; e; el = e, e = e->next) {   /* scan the extension list */
+               /* XXX should use ext_cmp() to sort patterns correctly */
+               /* almost strcmp, but make sure patterns are always last! */
+               if (e->exten[0] != '_' && extension[0] == '_')
                        res = -1;
-               else if ((e->exten[0] == '_') && (extension[0] != '_'))
+               else if (e->exten[0] == '_' && extension[0] != '_')
                        res = 1;
                else
                        res= strcmp(e->exten, extension);
-               if (!res) {
+               if (res == 0) { /* extension match, now look at cidmatch */
                        if (!e->matchcid && !tmp->matchcid)
                                res = 0;
                        else if (tmp->matchcid && !e->matchcid)