diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 37193309c6..8221dc8361 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -8582,6 +8582,10 @@ static void __expire_registry(const void *data) if (!peer) return; + if (peer->expire == -1) { + /* Removed already (possibly through CLI), ignore */ + return; + } peer->expire = -1; diff --git a/main/pbx.c b/main/pbx.c index 258ef14166..bd3e7a999e 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -2055,8 +2055,11 @@ static struct match_char *add_exten_to_pattern_tree(struct ast_context *con, str if (already && (m2 = already_in_tree(m1, buf, pattern)) && m2->next_char) { if (!(*(s1 + 1))) { /* if this is the end of the pattern, but not the end of the tree, then mark this node with the exten... a shorter pattern might win if the longer one doesn't match */ + if (findonly) { + return m2; + } if (m2->exten) { - ast_log(LOG_WARNING, "Found duplicate exten. Had %s found %s\n", m2->exten->exten, e1->exten); + ast_log(LOG_WARNING, "Found duplicate exten. Had %s found %s\n", m2->deleted ? "(deleted/invalid)" : m2->exten->exten, e1->exten); } m2->exten = e1; m2->deleted = 0; @@ -2080,7 +2083,7 @@ static struct match_char *add_exten_to_pattern_tree(struct ast_context *con, str } if (!(*(s1 + 1))) { if (m2 && m2->exten) { - ast_log(LOG_WARNING, "Found duplicate exten. Had %s found %s\n", m2->exten->exten, e1->exten); + ast_log(LOG_WARNING, "Found duplicate exten. Had %s found %s\n", m2->deleted ? "(deleted/invalid)" : m2->exten->exten, e1->exten); } m1->deleted = 0; m1->exten = e1;