diff options
-rw-r--r-- | apps/app_queue.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c index 70704f02b..24fe45afa 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -1634,20 +1634,26 @@ static struct call_queue *load_realtime_queue(const char *queuename) 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, *origvar; int ret = -1; - if (!(var = ast_load_realtime("queue_members", "interface", mem->interface, "queue_name", queue_name, NULL))) + if (!(var = ast_load_realtime("queue_members", "interface", mem->interface, "queue_name", queue_name, NULL))) { return ret; + } + + origvar = var; while (var) { - if (!strcmp(var->name, "uniqueid")) + if (!strcmp(var->name, "uniqueid")) { break; + } var = var->next; } if (var && !ast_strlen_zero(var->value)) { - if ((ast_update_realtime("queue_members", "uniqueid", var->value, field, value, NULL)) > -1) + if ((ast_update_realtime("queue_members", "uniqueid", var->value, field, value, NULL)) > -1) { ret = 0; + } } + ast_variables_destroy(origvar); return ret; } |