summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerry Wilson <twilson@digium.com>2011-10-25 01:29:32 +0000
committerTerry Wilson <twilson@digium.com>2011-10-25 01:29:32 +0000
commit700f0a275225bce2c5b41ebf4cf03c060927123f (patch)
tree462b6509bf46a5b5a60516ac3bf2e7074f0613ce
parent41ade83749e329fc919815c1e59093a07f26b27e (diff)
Return NULL when no results returned for realtime_multientry
It was not documented what the return value should be when no entries were returned with the multientry realtime callback. This change forces consistent behavior even if the backends return an empty ast_config. Review: https://reviewboard.asterisk.org/r/1521/ ........ Merged revisions 342223 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 342224 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@342225 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--include/asterisk/config.h3
-rw-r--r--main/config.c5
2 files changed, 8 insertions, 0 deletions
diff --git a/include/asterisk/config.h b/include/asterisk/config.h
index 56401bf46..932404d14 100644
--- a/include/asterisk/config.h
+++ b/include/asterisk/config.h
@@ -358,6 +358,9 @@ int ast_realtime_require_field(const char *family, ...) attribute_sentinel;
* is thus stored inside a traditional ast_config structure rather than
* just returning a linked list of variables.
*
+ * \return An ast_config with one or more results
+ * \retval NULL Error or no results returned
+ *
* \note You should use the constant SENTINEL to terminate arguments, in
* order to preserve cross-platform compatibility.
*/
diff --git a/main/config.c b/main/config.c
index e432de33d..6381a53f5 100644
--- a/main/config.c
+++ b/main/config.c
@@ -2446,6 +2446,11 @@ struct ast_config *ast_load_realtime_multientry(const char *family, ...)
for (i = 1; ; i++) {
if ((eng = find_engine(family, i, db, sizeof(db), table, sizeof(table)))) {
if (eng->realtime_multi_func && (res = eng->realtime_multi_func(db, table, ap))) {
+ /* If we were returned an empty cfg, destroy it and return NULL */
+ if (!res->root) {
+ ast_config_destroy(res);
+ res = NULL;
+ }
break;
}
} else {