if (!cat) {
ast_log(LOG_WARNING, "Out of memory\n");
ast_config_destroy(cfg);
+ if (rtdata) {
+ ast_config_destroy(rtdata);
+ }
return NULL;
}
ast_category_append(cfg, cat);
static struct ast_conference *find_conf_realtime(struct ast_channel *chan, char *confno, int make, int dynamic,
char *dynamic_pin, size_t pin_buf_len, int refcount, struct ast_flags *confflags)
{
- struct ast_variable *var;
+ struct ast_variable *var, *save;
struct ast_conference *cnf;
/* Check first in the conference list */
if (!var)
return NULL;
+ save = var;
while (var) {
if (!strcasecmp(var->name, "pin")) {
pin = ast_strdupa(var->value);
}
var = var->next;
}
- ast_variables_destroy(var);
+ ast_variables_destroy(save);
cnf = build_conf(confno, pin ? pin : "", pinadmin ? pinadmin : "", make, dynamic, refcount);
}
static int update_realtime_member_field(struct member *mem, const char *queue_name, const char *field, const char *value)
{
- struct ast_variable *var;
+ struct ast_variable *var, *save;
int ret = -1;
if (!(var = ast_load_realtime("queue_members", "interface", mem->interface, "queue_name", queue_name, NULL)))
return ret;
+ save = var;
while (var) {
if (!strcmp(var->name, "uniqueid"))
break;
if ((ast_update_realtime("queue_members", "uniqueid", var->value, field, value, NULL)) > -1)
ret = 0;
}
+ ast_variables_destroy(save);
return ret;
}
static int cli_realtime_load(int fd, int argc, char **argv)
{
char *header_format = "%30s %-30s\n";
- struct ast_variable *var=NULL;
+ struct ast_variable *var = NULL, *save = NULL;
- if(argc<5) {
+ if (argc < 5) {
ast_cli(fd, "You must supply a family name, a column to match on, and a value to match to.\n");
return RESULT_FAILURE;
}
var = ast_load_realtime(argv[2], argv[3], argv[4], NULL);
- if(var) {
+ if (var) {
+ save = var;
ast_cli(fd, header_format, "Column Name", "Column Value");
ast_cli(fd, header_format, "--------------------", "--------------------");
- while(var) {
+ while (var) {
ast_cli(fd, header_format, var->name, var->value);
var = var->next;
}
+ ast_variables_destroy(save);
} else {
ast_cli(fd, "No rows found matching search criteria.\n");
}