--- apps/app_queue.c (revisión: 137) +++ apps/app_queue.c (copia de trabajo) @@ -120,7 +120,8 @@ QUEUE_STRATEGY_FEWESTCALLS, QUEUE_STRATEGY_RANDOM, QUEUE_STRATEGY_RRMEMORY, - QUEUE_STRATEGY_LINEAR + QUEUE_STRATEGY_LINEAR, + QUEUE_STRATEGY_WRANDOM }; static struct strategy { @@ -133,7 +134,8 @@ { QUEUE_STRATEGY_FEWESTCALLS, "fewestcalls" }, { QUEUE_STRATEGY_RANDOM, "random" }, { QUEUE_STRATEGY_RRMEMORY, "rrmemory" }, - { QUEUE_STRATEGY_LINEAR, "linear" } + { QUEUE_STRATEGY_LINEAR, "linear" }, + { QUEUE_STRATEGY_WRANDOM, "wrandom"}, }; #define DEFAULT_RETRY 5 @@ -2731,6 +2733,10 @@ tmp->metric = ast_random() % 1000; tmp->metric += mem->penalty * 1000000; break; + case QUEUE_STRATEGY_WRANDOM: + tmp->metric = ast_random() % ((1 + mem->penalty) * 1000); + ast_log(LOG_DEBUG,"calc_metric() Calculated metric %d for member %s (penalty %d)\n",tmp->metric,mem->membername,mem->penalty); + break; case QUEUE_STRATEGY_FEWESTCALLS: tmp->metric = mem->calls; tmp->metric += mem->penalty * 1000000;