diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-10-26 22:25:43 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-10-26 22:25:43 +0000 |
commit | e2c75a92f97e22fed0bd2017fccb550fc2106ba3 (patch) | |
tree | 8cc9a36b9066a72d36a623a08bb8779286caedf2 /channels/chan_agent.c | |
parent | b561eb0a2d237ca6c387b60011d55fc38bec1c2c (diff) |
Pass concept of status back, permit "leaveempty" to work with static agents who are not loggedon (bug #2719)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4106 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_agent.c')
-rwxr-xr-x | channels/chan_agent.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c index d16677c7d..8e596a44f 100755 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -34,6 +34,7 @@ #include <asterisk/manager.h> #include <asterisk/features.h> #include <asterisk/utils.h> +#include <asterisk/causes.h> #include <sys/socket.h> #include <errno.h> #include <unistd.h> @@ -1051,7 +1052,7 @@ static int check_beep(struct agent_pvt *newlyavailable, int needlock) return res; } -static struct ast_channel *agent_request(const char *type, int format, void *data) +static struct ast_channel *agent_request(const char *type, int format, void *data, int *cause) { struct agent_pvt *p; struct ast_channel *chan = NULL; @@ -1113,7 +1114,7 @@ static struct ast_channel *agent_request(const char *type, int format, void *dat chan = agent_new(p, AST_STATE_DOWN); } else if (!p->owner && !ast_strlen_zero(p->loginchan)) { /* Adjustable agent */ - p->chan = ast_request("Local", format, p->loginchan); + p->chan = ast_request("Local", format, p->loginchan, cause); if (p->chan) chan = agent_new(p, AST_STATE_DOWN); } @@ -1142,6 +1143,10 @@ static struct ast_channel *agent_request(const char *type, int format, void *dat } else ast_log(LOG_DEBUG, "Not creating place holder for '%s' since nobody logged in\n", s); } + if (hasagent) + *cause = AST_CAUSE_BUSY; + else + *cause = AST_CAUSE_UNREGISTERED; ast_mutex_unlock(&agentlock); return chan; } |