}
if (member_reload) {
ao2_callback(q->members, OBJ_NODATA, mark_member_dead, NULL);
+ q->found = 1;
}
for (var = ast_variable_browse(cfg, queuename); var; var = var->next) {
if (member_reload && !strcasecmp(var->name, "member")) {
queue_t_unref(q, "Expiring creation reference");
}
+static int remove_members_and_mark_unfound(void *obj, void *arg, int flags)
+{
+ struct call_queue *q = obj;
+ char *queuename = arg;
+ if (!q->realtime && (ast_strlen_zero(queuename) || !strcasecmp(queuename, q->name))) {
+ q->found = 0;
+
+ }
+ return 0;
+}
+
static int mark_dead_and_unfound(void *obj, void *arg, int flags)
{
struct call_queue *q = obj;
char *cat;
struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
const int queue_reload = ast_test_flag(mask, QUEUE_RELOAD_PARAMETERS);
+ const int member_reload = ast_test_flag(mask, QUEUE_RELOAD_MEMBER);
if (!(cfg = ast_config_load("queues.conf", config_flags))) {
ast_log(LOG_NOTICE, "No call queueing config file (queues.conf), so no call queues\n");
ao2_callback(queues, OBJ_NODATA | OBJ_NOLOCK, mark_dead_and_unfound, (char *) queuename);
}
+ if (member_reload) {
+ ao2_callback(queues, OBJ_NODATA, remove_members_and_mark_unfound, (char *) queuename);
+ }
+
/* Chug through config file */
cat = NULL;
while ((cat = ast_category_browse(cfg, cat)) ) {