From 789a8be69959f6680574e32df0bbc5860d204dba Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Tue, 19 Aug 2003 21:14:16 +0000
Subject: [PATCH] Create/dial channel if availability is on callback channel

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1379 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_agent.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index 0ebfdb337f..85dd349c0d 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);
-- 
GitLab