Skip to content

Commit d4db200

Browse files
committed
[call_center] fix skill overflow on refreshing agents via MI
Completes 6617ecc
1 parent c465148 commit d4db200

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

modules/call_center/cc_data.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -683,18 +683,27 @@ int add_cc_agent( struct cc_data *data, str *id, struct media_info *media,
683683
if (skills && skills->len) {
684684
p = skills->s;
685685
while (p) {
686+
if (agent->no_skills==MAX_SKILLS_PER_AGENT) {
687+
LM_WARN("too many skills (%d) for the agent <%.*s>, "
688+
"discarding <%.*s>\n",
689+
agent->no_skills, agent->id.len, agent->id.s,
690+
(int)(skills->s+skills->len-p), p);
691+
break;
692+
}
686693
skill.s = p;
687694
p = q_memchr(skill.s, ',', skills->s+skills->len-skill.s);
688695
skill.len = p?(p-skill.s):(skills->s+skills->len-skill.s);
689696
trim(&skill);
690697
if (skill.len) {
691698
skill_id = get_skill_id(data,&skill);
692699
if (skill_id==0) {
693-
LM_ERR("cannot get skill id\n");
694-
goto error1;
700+
LM_WARN("unknown skill <%.*s> for the agent <%.*s>,"
701+
"discarding\n",
702+
skill.len, skill.s, agent->id.len, agent->id.s);
703+
} else {
704+
n = agent->no_skills++;
705+
agent->skills[n] = skill_id;
695706
}
696-
n = agent->no_skills++;
697-
agent->skills[n] = skill_id;
698707
}
699708
if(p)
700709
p++;

0 commit comments

Comments
 (0)