]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Create/dial channel if availability is on callback channel
authorMark Spencer <markster@digium.com>
Tue, 19 Aug 2003 21:14:16 +0000 (21:14 +0000)
committerMark Spencer <markster@digium.com>
Tue, 19 Aug 2003 21:14:16 +0000 (21:14 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1379 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_agent.c

index 0ebfdb337f4cc92746b96ce360e3f02eb349b7f6..85dd349c0da1977586864c3587c57a68117b884a 100755 (executable)
@@ -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);