aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xapps/app_queue.c1
-rwxr-xr-xchannel.c1
-rwxr-xr-xchannels/chan_agent.c16
3 files changed, 13 insertions, 5 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c
index 174bd0a99..265c82dcd 100755
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -817,7 +817,6 @@ static int try_calling(struct queue_ent *qe, char *options, char *announceoverri
res2 = ast_autoservice_start(qe->chan);
if (!res2)
res2 = ast_streamfile(peer, announce, peer->language);
- /* XXX Need a function to wait on *both* streams XXX */
if (!res2)
res2 = ast_waitstream(peer, "");
res2 |= ast_autoservice_stop(qe->chan);
diff --git a/channel.c b/channel.c
index 85215f703..3ec67e2bf 100755
--- a/channel.c
+++ b/channel.c
@@ -1542,7 +1542,6 @@ struct ast_channel *ast_request(char *type, int format, void *data)
if (chan->requester)
c = chan->requester(type, capabilities, data);
if (c) {
-// ast_device_state_changed(c->name);
if (c->_state == AST_STATE_DOWN) {
manager_event(EVENT_FLAG_CALL, "Newchannel",
"Channel: %s\r\n"
diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index 404862ee2..2893046c8 100755
--- a/channels/chan_agent.c
+++ b/channels/chan_agent.c
@@ -128,11 +128,18 @@ static struct agent_pvt {
} \
} while(0)
+/* Cleanup moves all the relevant FD's from the 2nd to the first, but retains things
+ properly for a timingfd XXX This might need more work if agents were logged in as agents or other
+ totally impractical combinations XXX */
+
#define CLEANUP(ast, p) do { \
int x; \
if (p->chan) { \
- for (x=0;x<AST_MAX_FDS;x++) \
- ast->fds[x] = p->chan->fds[x]; \
+ for (x=0;x<AST_MAX_FDS;x++) {\
+ if (x != AST_MAX_FDS - 2) \
+ ast->fds[x] = p->chan->fds[x]; \
+ } \
+ ast->fds[AST_MAX_FDS - 3] = p->chan->fds[AST_MAX_FDS - 2]; \
} \
} while(0)
@@ -247,7 +254,10 @@ static struct ast_frame *agent_read(struct ast_channel *ast)
CHECK_FORMATS(ast, p);
if (p->chan) {
p->chan->exception = ast->exception;
- p->chan->fdno = ast->fdno;
+ if (ast->fdno == AST_MAX_FDS - 3)
+ p->chan->fdno = AST_MAX_FDS - 2;
+ else
+ p->chan->fdno = ast->fdno;
f = ast_read(p->chan);
} else
f = &null_frame;