mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-06 12:36:58 +00:00
Instead of always creating a realtime queue member as unpaused, read the
"paused" column and use that value for the paused status of the member. (issue #8949, jmls) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@53035 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -921,10 +921,11 @@ static void queue_set_param(struct call_queue *q, const char *param, const char
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rt_handle_member_record(struct call_queue *q, char *interface, const char *membername, const char *penalty_str)
|
static void rt_handle_member_record(struct call_queue *q, char *interface, const char *membername, const char *penalty_str, const char *paused_str)
|
||||||
{
|
{
|
||||||
struct member *m, *prev_m;
|
struct member *m, *prev_m;
|
||||||
int penalty = 0;
|
int penalty = 0;
|
||||||
|
int paused = 0;
|
||||||
|
|
||||||
if (penalty_str) {
|
if (penalty_str) {
|
||||||
penalty = atoi(penalty_str);
|
penalty = atoi(penalty_str);
|
||||||
@@ -932,6 +933,12 @@ static void rt_handle_member_record(struct call_queue *q, char *interface, const
|
|||||||
penalty = 0;
|
penalty = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (paused_str) {
|
||||||
|
paused = atoi(paused_str);
|
||||||
|
if (paused < 0)
|
||||||
|
paused = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Find the member, or the place to put a new one. */
|
/* Find the member, or the place to put a new one. */
|
||||||
for (m = q->members, prev_m = NULL;
|
for (m = q->members, prev_m = NULL;
|
||||||
m && strcmp(m->interface, interface);
|
m && strcmp(m->interface, interface);
|
||||||
@@ -939,7 +946,7 @@ static void rt_handle_member_record(struct call_queue *q, char *interface, const
|
|||||||
|
|
||||||
/* Create a new one if not found, else update penalty */
|
/* Create a new one if not found, else update penalty */
|
||||||
if (!m) {
|
if (!m) {
|
||||||
if ((m = create_queue_member(interface, membername, penalty, 0))) {
|
if ((m = create_queue_member(interface, membername, penalty, paused))) {
|
||||||
m->dead = 0;
|
m->dead = 0;
|
||||||
add_to_interfaces(interface);
|
add_to_interfaces(interface);
|
||||||
if (prev_m) {
|
if (prev_m) {
|
||||||
@@ -950,6 +957,7 @@ static void rt_handle_member_record(struct call_queue *q, char *interface, const
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
m->dead = 0; /* Do not delete this one. */
|
m->dead = 0; /* Do not delete this one. */
|
||||||
|
m->paused = paused;
|
||||||
m->penalty = penalty;
|
m->penalty = penalty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1073,7 +1081,8 @@ static struct call_queue *find_queue_by_name_rt(const char *queuename, struct as
|
|||||||
while ((interface = ast_category_browse(member_config, interface))) {
|
while ((interface = ast_category_browse(member_config, interface))) {
|
||||||
rt_handle_member_record(q, interface,
|
rt_handle_member_record(q, interface,
|
||||||
S_OR(ast_variable_retrieve(member_config, interface, "membername"), interface),
|
S_OR(ast_variable_retrieve(member_config, interface, "membername"), interface),
|
||||||
ast_variable_retrieve(member_config, interface, "penalty"));
|
ast_variable_retrieve(member_config, interface, "penalty"),
|
||||||
|
ast_variable_retrieve(member_config, interface, "paused"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Delete all realtime members that have been deleted in DB. */
|
/* Delete all realtime members that have been deleted in DB. */
|
||||||
|
Reference in New Issue
Block a user