aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_agent.c
diff options
context:
space:
mode:
authorfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2007-02-22 23:19:25 +0000
committerfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2007-02-22 23:19:25 +0000
commit8283b7a0a47e38f2275b856891b47ca4f2099fc0 (patch)
tree759d694a8229e0c7be27b8ac928d95a206ef8cd5 /channels/chan_agent.c
parent94dbcd128ef90318af489ec9dac23e5ed83f562a (diff)
Always defer Agent logoff if any channels are up until they hang up. (issue #9123 reported by arbrandes)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@56279 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_agent.c')
-rw-r--r--channels/chan_agent.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index 964413281..2c84b8f10 100644
--- a/channels/chan_agent.c
+++ b/channels/chan_agent.c
@@ -1480,15 +1480,13 @@ static int agent_logoff(char *agent, int soft)
for (p=agents; p; p=p->next) {
if (!strcasecmp(p->agent, agent)) {
+ if (p->owner || p->chan)
+ defer = 1;
if (!soft) {
- if (p->owner) {
- defer = 1;
+ if (p->owner)
ast_softhangup(p->owner, AST_SOFTHANGUP_EXPLICIT);
- }
- if (p->chan) {
- defer = 1;
+ if (p->chan)
ast_softhangup(p->chan, AST_SOFTHANGUP_EXPLICIT);
- }
}
ret = 0; /* found an agent => return 0 */
logintime = time(NULL) - p->loginstart;