return res;
}
-static void free_members(struct ast_call_queue *q)
+static void free_members(struct ast_call_queue *q, int all)
{
/* Free non-dynamic members */
struct member *curm, *next, *prev;
prev = NULL;
while(curm) {
next = curm->next;
- if (!curm->dynamic) {
+ if (all || !curm->dynamic) {
if (prev)
prev->next = next;
else
cur = cur->next;
}
ast_mutex_unlock(&qlock);
- free_members(q);
+ free_members(q, 1);
free(q);
}
q->retry = 0;
q->timeout = -1;
q->maxlen = 0;
- free_members(q);
+ free_members(q, 0);
strcpy(q->moh, "");
strcpy(q->announce, "");
strcpy(q->context, "");
- prev = NULL;
+ prev = q->members;
+ if (prev) {
+ /* find the end of any dynamic members */
+ while(prev->next)
+ prev = prev->next;
+ }
var = ast_variable_browse(cfg, cat);
while(var) {
if (!strcasecmp(var->name, "member")) {