summaryrefslogtreecommitdiff
path: root/channels/chan_agent.c
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2003-08-13 01:12:19 +0000
committerMark Spencer <markster@digium.com>2003-08-13 01:12:19 +0000
commitf230bc9d1296f27c1f4846b6fe97a8122573a575 (patch)
tree66138b5bf2a9495949a38741d80e9a0668858873 /channels/chan_agent.c
parent62ed4984686e5362b980ae1e7c336055a8be291d (diff)
In agent, forward codecs along
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1306 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_agent.c')
-rwxr-xr-xchannels/chan_agent.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index b3ae6f0b8..53dd4e7e9 100755
--- a/channels/chan_agent.c
+++ b/channels/chan_agent.c
@@ -226,10 +226,11 @@ static struct ast_frame *agent_read(struct ast_channel *ast)
struct ast_frame *f = NULL;
static struct ast_frame null_frame = { AST_FRAME_NULL, };
static struct ast_frame answer_frame = { AST_FRAME_CONTROL, AST_CONTROL_ANSWER };
- ast_pthread_mutex_lock(&p->lock);
- if (p->chan)
+ ast_pthread_mutex_lock(&p->lock);
+ if (p->chan) {
+ p->chan->pvt->rawreadformat = ast->pvt->rawreadformat;
f = ast_read(p->chan);
- else
+ } else
f = &null_frame;
if (!f) {
/* If there's a channel, hang it up (if it's on a callback) make it NULL */
@@ -278,9 +279,10 @@ static int agent_write(struct ast_channel *ast, struct ast_frame *f)
struct agent_pvt *p = ast->pvt->pvt;
int res = -1;
ast_pthread_mutex_lock(&p->lock);
- if (p->chan)
+ if (p->chan) {
+ p->chan->pvt->rawwriteformat = ast->pvt->rawwriteformat;
res = ast_write(p->chan, f);
- else
+ } else
res = 0;
CLEANUP(ast, p);
ast_pthread_mutex_unlock(&p->lock);