diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-11-13 22:44:33 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-11-13 22:44:33 +0000 |
commit | 0cb7e1d1213a736678db0461df98ffbc51bedf0e (patch) | |
tree | 993cb4342c122c30661869af3aa5adea2e357b7f /channels/chan_agent.c | |
parent | 7410ef70b13796d508a2a8e3a08d8a7ca7b7163c (diff) |
Big agent / queue fixes
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4231 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_agent.c')
-rwxr-xr-x | channels/chan_agent.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c index a000caa1e..e13bbca31 100755 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -591,6 +591,7 @@ static int agent_hangup(struct ast_channel *ast) snprintf(agent, sizeof(agent), "Agent/%s", p->agent); ast_queue_log("NONE", ast->uniqueid, agent, "AGENTCALLBACKLOGOFF", "%s|%ld|%s", p->loginchan, logintime, "Autologoff"); p->loginchan[0] = '\0'; + ast_device_state_changed("Agent/%s", p->agent); } } else if (p->dead) { ast_mutex_lock(&p->chan->lock); @@ -1479,6 +1480,7 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode) ast_queue_log("NONE", chan->uniqueid, agent, "AGENTCALLBACKLOGIN", "%s", p->loginchan); if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_3 "Callback Agent '%s' logged in on %s\n", p->agent, p->loginchan); + ast_device_state_changed("Agent/%s", p->agent); } else { logintime = time(NULL) - p->loginstart; p->loginstart = 0; @@ -1491,6 +1493,7 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode) ast_queue_log("NONE", chan->uniqueid, agent, "AGENTCALLBACKLOGOFF", "%s|%ld|", last_loginchan, logintime); if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_3 "Callback Agent '%s' logged out\n", p->agent); + ast_device_state_changed("Agent/%s", p->agent); } ast_mutex_unlock(&agentlock); if (!res) @@ -1525,6 +1528,7 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode) check_availability(p, 0); ast_mutex_unlock(&p->lock); ast_mutex_unlock(&agentlock); + ast_device_state_changed("Agent/%s", p->agent); while (res >= 0) { ast_mutex_lock(&p->lock); if (p->chan != chan) @@ -1591,6 +1595,7 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode) if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_3 "Agent '%s' logged out\n", p->agent); /* If there is no owner, go ahead and kill it now */ + ast_device_state_changed("Agent/%s", p->agent); if (p->dead && !p->owner) { ast_mutex_destroy(&p->lock); ast_mutex_destroy(&p->app_lock); @@ -1745,7 +1750,6 @@ static int agent_devicestate(void *data) while(p) { ast_mutex_lock(&p->lock); if (!p->pending && ((groupmatch && (p->group & groupmatch)) || !strcmp(data, p->agent))) { - res = AST_DEVICE_UNKNOWN; if (p->owner) { if (res != AST_DEVICE_INUSE) res = AST_DEVICE_BUSY; |