diff options
Diffstat (limited to 'main/sorcery.c')
-rw-r--r-- | main/sorcery.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/main/sorcery.c b/main/sorcery.c index b75eb8ba7..e78fc5c6a 100644 --- a/main/sorcery.c +++ b/main/sorcery.c @@ -1897,7 +1897,7 @@ void *ast_sorcery_retrieve_by_fields(const struct ast_sorcery *sorcery, const ch } } - if ((flags & AST_RETRIEVE_FLAG_MULTIPLE) || !object) { + if (((flags & AST_RETRIEVE_FLAG_MULTIPLE) && (!ao2_container_count(object) || !wizard->caching)) || !object) { continue; } @@ -1935,6 +1935,10 @@ struct ao2_container *ast_sorcery_retrieve_by_regex(const struct ast_sorcery *so } wizard->wizard->callbacks.retrieve_regex(sorcery, wizard->data, object_type->name, objects, regex); + + if (wizard->caching && ao2_container_count(objects)) { + break; + } } AST_VECTOR_RW_UNLOCK(&object_type->wizards); |