diff options
Diffstat (limited to 'channels/chan_agent.c')
-rw-r--r-- | channels/chan_agent.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c index 2c84b8f10..9084cb09a 100644 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -793,6 +793,8 @@ static int agent_hangup(struct ast_channel *ast) } else if (!p->loginstart) { p->loginchan[0] = '\0'; p->logincallerid[0] = '\0'; + if (persistent_agents) + dump_agents(); } } else if (p->dead) { ast_mutex_lock(&p->chan->lock); @@ -805,9 +807,16 @@ static int agent_hangup(struct ast_channel *ast) } } ast_mutex_unlock(&p->lock); + /* Only register a device state change if the agent is still logged in */ - if (p->loginstart) + if (!p->loginstart) { + p->loginchan[0] = '\0'; + p->logincallerid[0] = '\0'; + if (persistent_agents) + dump_agents(); + } else { ast_device_state_changed("Agent/%s", p->agent); + } if (p->pending) { ast_mutex_lock(&agentlock); |