]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
pbx.c: Additional fixes to ast_context_remove_extension_callerid2. 57/3557/1
authorCorey Farrell <git@cfware.com>
Fri, 12 Aug 2016 04:30:27 +0000 (00:30 -0400)
committerCorey Farrell <git@cfware.com>
Sun, 14 Aug 2016 03:02:33 +0000 (23:02 -0400)
Do not check registrar of the first extension head.  We should only check
the registrar when we match the priority.

Additionally fix a couple calls to strcmp which used the input callerid
instead of the clean version ex.cidmatch.

ASTERISK-26233

Change-Id: I17ea6881a18f40840ae9c1f5394aab1fbb3769f1

main/pbx.c

index 4da298aad931545e870b0c242aa8112ffcf0ff8a..41094c5d64b75037d019699b2c0c8f5e3de0f138 100644 (file)
@@ -7444,9 +7444,11 @@ int ast_context_remove_extension_callerid2(struct ast_context *con, const char *
        /* scan the extension list to find first matching extension-registrar */
        for (exten = con->root; exten; prev_exten = exten, exten = exten->next) {
                if (!strcmp(exten->exten, ex.exten) &&
-                       (!registrar || !strcmp(exten->registrar, registrar)) &&
-                       (!matchcallerid || (!ast_strlen_zero(callerid) && !ast_strlen_zero(exten->cidmatch) && !strcmp(exten->cidmatch, callerid)) || (ast_strlen_zero(callerid) && ast_strlen_zero(exten->cidmatch))))
+                       (!matchcallerid ||
+                               (!ast_strlen_zero(ex.cidmatch) && !ast_strlen_zero(exten->cidmatch) && !strcmp(exten->cidmatch, ex.cidmatch)) ||
+                               (ast_strlen_zero(ex.cidmatch) && ast_strlen_zero(exten->cidmatch)))) {
                        break;
+               }
        }
        if (!exten) {
                /* we can't find right extension */
@@ -7458,7 +7460,7 @@ int ast_context_remove_extension_callerid2(struct ast_context *con, const char *
        /* scan the priority list to remove extension with exten->priority == priority */
        for (peer = exten, next_peer = exten->peer ? exten->peer : exten->next;
                 peer && !strcmp(peer->exten, ex.exten) &&
-                       (!callerid || (!matchcallerid && !peer->matchcid) || (matchcallerid && peer->matchcid && !strcmp(peer->cidmatch, callerid))) ;
+                       (!callerid || (!matchcallerid && !peer->matchcid) || (matchcallerid && peer->matchcid && !strcmp(peer->cidmatch, ex.cidmatch))) ;
                        peer = next_peer, next_peer = next_peer ? (next_peer->peer ? next_peer->peer : next_peer->next) : NULL) {
 
                if ((priority == 0 || peer->priority == priority) &&