From 2751b576c2389f74417009e0dd595145ef664527 Mon Sep 17 00:00:00 2001 From: markster Date: Tue, 19 Aug 2003 21:14:16 +0000 Subject: Create/dial channel if availability is on callback channel git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1379 f38db490-d61c-443f-a65b-d21fe96a405b --- channels/chan_agent.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'channels/chan_agent.c') diff --git a/channels/chan_agent.c b/channels/chan_agent.c index 0ebfdb337..85dd349c0 100755 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -707,7 +707,21 @@ static int check_availability(struct agent_pvt *newlyavailable, int needlock) if (!p->abouttograb && p->pending && ((p->group && (newlyavailable->group & p->group)) || !strcmp(p->agent, newlyavailable->agent))) { ast_log(LOG_DEBUG, "Call '%s' looks like a winner for agent '%s'\n", p->owner->name, newlyavailable->agent); /* We found a pending call, time to merge */ - chan = agent_new(newlyavailable, AST_STATE_DOWN); + if (strlen(newlyavailable->loginchan)) { + /* Adjustable agent */ + newlyavailable->chan = ast_request("Local", AST_FORMAT_SLINEAR, newlyavailable->loginchan); + if (newlyavailable->chan) { + if (agent_call(newlyavailable->chan, newlyavailable->loginchan, 0)) + ast_log(LOG_WARNING, "Call failed on channel '%s'\n", newlyavailable->chan->name); + chan = agent_new(p, AST_STATE_DOWN); + } else { + ast_log(LOG_WARNING, "I didn't expect to ever get here...\n"); + ast_mutex_unlock(&p->lock); + p = p->next; + continue; + } + } else + chan = agent_new(newlyavailable, AST_STATE_DOWN); parent = p->owner; p->abouttograb = 1; ast_mutex_unlock(&p->lock); -- cgit v1.2.3