aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_agent.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-08-13 01:12:19 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-08-13 01:12:19 +0000
commit68b80c39d0c3d3a3a8bd4c40de53e2cbe72d03b9 (patch)
tree66138b5bf2a9495949a38741d80e9a0668858873 /channels/chan_agent.c
parentfcbcad7af7a3d35e5ed2b6bce9529da4144f3aa6 (diff)
In agent, forward codecs along
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1306 f38db490-d61c-443f-a65b-d21fe96a405b
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);