When calling the Realtime app more than once, unset fields which were

previously set are erroneously still set (Bug 6701).  After discussion,
it was determined this should only be changed in trunk.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@49801 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Tilghman Lesher
2007-01-07 16:21:12 +00:00
parent 785483f304
commit c4c2c546da
5 changed files with 45 additions and 13 deletions

View File

@@ -1314,7 +1314,7 @@ struct ast_config *ast_config_load_with_comments(const char *filename)
return result;
}
struct ast_variable *ast_load_realtime(const char *family, ...)
struct ast_variable *ast_load_realtime_all(const char *family, ...)
{
struct ast_config_engine *eng;
char db[256]="";
@@ -1331,6 +1331,35 @@ struct ast_variable *ast_load_realtime(const char *family, ...)
return res;
}
struct ast_variable *ast_load_realtime(const char *family, ...)
{
struct ast_variable *res, *cur, *prev = NULL, *freeme = NULL;
va_list ap;
va_start(ap, family);
res = ast_load_realtime_all(family, ap);
va_end(ap);
/* Eliminate blank entries */
for (cur = res; cur; cur = cur->next) {
if (freeme) {
free(freeme);
freeme = NULL;
}
if (ast_strlen_zero(cur->value)) {
if (prev)
prev->next = cur->next;
else
res = cur->next;
freeme = cur;
} else {
prev = cur;
}
}
return res;
}
/*! \brief Check if realtime engine is configured for family */
int ast_check_realtime(const char *family)
{