diff --git a/CHANGES b/CHANGES index f9c6920109..4db3256219 100644 --- a/CHANGES +++ b/CHANGES @@ -17,3 +17,5 @@ Changes since Asterisk 1.4-beta was branched: can use --with-cap to specify the path. * H323 remote hold notification support added (by NOTIFY message and/or H.450 supplementary service) + * Added keepstats option to queues.conf which will keep queue + statistics during a reload. diff --git a/apps/app_queue.c b/apps/app_queue.c index 6d1df42d7e..6ec3c4ef3e 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -237,6 +237,9 @@ static const char *pm_family = "/Queue/PersistentMembers"; /* The maximum length of each persistent member queue database entry */ #define PM_MAX_LEN 8192 +/*! \brief queues.conf [general] option */ +static int queue_keep_stats = 0; + /*! \brief queues.conf [general] option */ static int queue_persistent_members = 0; @@ -3699,6 +3702,9 @@ static int reload_queues(void) while ((cat = ast_category_browse(cfg, cat)) ) { if (!strcasecmp(cat, "general")) { /* Initialize global settings */ + queue_keep_stats = 0; + if ((general_val = ast_variable_retrieve(cfg, "general", "keepstats"))) + queue_keep_stats = ast_true(general_val); queue_persistent_members = 0; if ((general_val = ast_variable_retrieve(cfg, "general", "persistentmembers"))) queue_persistent_members = ast_true(general_val); @@ -3728,7 +3734,8 @@ static int reload_queues(void) ast_mutex_lock(&q->lock); /* Re-initialize the queue, and clear statistics */ init_queue(q); - clear_queue(q); + if (!queue_keep_stats) + clear_queue(q); for (cur = q->members; cur; cur = cur->next) { if (!cur->dynamic) { cur->delme = 1; diff --git a/configs/queues.conf.sample b/configs/queues.conf.sample index f8582afef1..42c1e89776 100644 --- a/configs/queues.conf.sample +++ b/configs/queues.conf.sample @@ -8,6 +8,11 @@ ; read into their recorded queues. Default is 'yes'. ; persistentmembers = yes +; +; Keep Stats +; Keep queue statistics during a reload. Default is 'no' +; +keepstats = no ; ; AutoFill Behavior ; The old/current behavior of the queue has a serial type behavior