[asterisk-commits] mmichelson: branch mmichelson/queue-reset r166965 - /team/mmichelson/queue-re...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Dec 31 14:21:00 CST 2008
Author: mmichelson
Date: Wed Dec 31 14:21:00 2008
New Revision: 166965
URL: http://svn.digium.com/view/asterisk?view=rev&rev=166965
Log:
Add some comments to help clarify some code portions
Modified:
team/mmichelson/queue-reset/apps/app_queue.c
Modified: team/mmichelson/queue-reset/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/team/mmichelson/queue-reset/apps/app_queue.c?view=diff&rev=166965&r1=166964&r2=166965
==============================================================================
--- team/mmichelson/queue-reset/apps/app_queue.c (original)
+++ team/mmichelson/queue-reset/apps/app_queue.c Wed Dec 31 14:21:00 2008
@@ -5557,8 +5557,7 @@
if (cur) {
ao2_ref(cur, -1);
- }
- else {
+ } else {
q->membercount++;
}
}
@@ -5601,17 +5600,20 @@
ao2_lock(q);
prev_weight = q->weight ? 1 : 0;
}
- /* Check if a queue with this name already exists */
+ /* Check if we already found a queue with this name in the config file */
if (q->found) {
ast_log(LOG_WARNING, "Queue '%s' already defined! Skipping!\n", queuename);
if (!new) {
+ /* It should be impossible to *not* hit this case*/
ao2_unlock(q);
- queue_unref(q);
- }
+ }
+ queue_unref(q);
return;
}
/* Due to the fact that the "linear" strategy will have a different allocation
- * scheme for queue members, we must devise the queue's strategy before other initializations
+ * scheme for queue members, we must devise the queue's strategy before other initializations.
+ * To be specific, the linear strategy needs to function like a linked list, meaning the ao2
+ * container used will have only a single bucket instead of the typical number.
*/
if (queue_reload) {
if ((tmpvar = ast_variable_retrieve(cfg, queuename, "strategy"))) {
@@ -5624,7 +5626,6 @@
} else {
q->strategy = QUEUE_STRATEGY_RINGALL;
}
- /* Re-initialize the queue */
init_queue(q);
}
if (member_reload) {
@@ -5632,6 +5633,10 @@
mem_iter = ao2_iterator_init(q->members, 0);
while ((cur = ao2_iterator_next(&mem_iter))) {
if (!cur->dynamic) {
+ /* Since dynamic members will not be found in the config file,
+ * marking them as delme here is sure to end up dooming them, so
+ * don't do it
+ */
cur->delme = 1;
}
ao2_ref(cur, -1);
More information about the asterisk-commits
mailing list