aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_agent.c
diff options
context:
space:
mode:
authormattf <mattf@f38db490-d61c-443f-a65b-d21fe96a405b>2005-02-25 00:00:35 +0000
committermattf <mattf@f38db490-d61c-443f-a65b-d21fe96a405b>2005-02-25 00:00:35 +0000
commit72cdf46f82b7db29922b67fdb7501bcbf44142aa (patch)
tree78e4e3ba0f2a1b3702ca30f99d1e232c2093a7f7 /channels/chan_agent.c
parent93df440b0adf0b32f954e6a807701e78a7639566 (diff)
Adding support to log off an agent from the console
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5073 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_agent.c')
-rwxr-xr-xchannels/chan_agent.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index 481485c28..8473b1337 100755
--- a/channels/chan_agent.c
+++ b/channels/chan_agent.c
@@ -1422,6 +1422,55 @@ static int agents_show(int fd, int argc, char **argv)
return RESULT_SUCCESS;
}
+static int agent_logoff(int fd, int argc, char **argv)
+{
+ struct agent_pvt *p = NULL;
+ char *line = NULL;
+ int res = 0;
+
+ /* Check args */
+ if (argc != 3)
+ return RESULT_SHOWUSAGE;
+
+ line = argv[2];
+
+ ast_mutex_lock(&agentlock);
+ p = agents;
+ while (p) {
+ ast_mutex_lock(&p->lock);
+ res = strcmp(p->agent, line);
+
+ if (!res) {
+ /* Found him! Now we're going to kill him. */
+
+ if (ast_strlen_zero(p->loginchan)) {
+ ast_cli(fd, "Agent %s already logged off the system.\n", line);
+ ast_mutex_unlock(&p->lock);
+ break;
+ }
+
+ strcpy(p->loginchan, ""); /* Bang! Killed him */
+ ast_cli(fd, "Agent %s successfully logged off.\n", line);
+ ast_mutex_unlock(&p->lock);
+ break;
+ }
+
+ ast_mutex_unlock(&p->lock);
+ p = p->next;
+ }
+ ast_mutex_unlock(&agentlock);
+ if (res) ast_cli(fd, "Unable to find agent %s.\n", line);
+ return RESULT_SUCCESS;
+}
+
+static char agent_logoff_usage[] =
+"Usage: agent logoff <agentnum>\n"
+" Log an agent off the system that maybe forgot to log off, etc....\n";
+
+static struct ast_cli_entry cli_agent_logoff = {
+ { "agent", "logoff", NULL }, agent_logoff,
+ "Log an agent off of the system", agent_logoff_usage, NULL};
+
static char show_agents_usage[] =
"Usage: show agents\n"
" Provides summary information on agents.\n";