From: Mark Spencer Date: Wed, 28 May 2003 19:38:02 +0000 (+0000) Subject: Write to read monitor before translation X-Git-Tag: 0.5.0~437 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=37d41292bb671f41a1d94cf6c2377bda5faf52f1;p=thirdparty%2Fasterisk.git Write to read monitor before translation git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1059 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channel.c b/channel.c index fd684d4898..7ceb7a78b1 100755 --- a/channel.c +++ b/channel.c @@ -1064,10 +1064,17 @@ struct ast_frame *ast_read(struct ast_channel *chan) ast_log(LOG_NOTICE, "Dropping incompatible voice frame on %s of format %d since our native format has changed to %d\n", chan->name, f->subclass, chan->nativeformats); ast_frfree(f); f = &null_frame; - } else if (chan->pvt->readtrans) { - f = ast_translate(chan->pvt->readtrans, f, 1); - if (!f) - f = &null_frame; + } else { + if (chan->monitor && chan->monitor->read_stream ) { + if( ast_writestream( chan->monitor->read_stream, f ) < 0 ) { + ast_log(LOG_WARNING, "Failed to write data to channel monitor read stream\n"); + } + } + if (chan->pvt->readtrans) { + f = ast_translate(chan->pvt->readtrans, f, 1); + if (!f) + f = &null_frame; + } } } @@ -1089,11 +1096,7 @@ struct ast_frame *ast_read(struct ast_channel *chan) /* Answer the CDR */ ast_setstate(chan, AST_STATE_UP); ast_cdr_answer(chan->cdr); - } else if( ( f->frametype == AST_FRAME_VOICE ) && chan->monitor && chan->monitor->read_stream ) { - if( ast_writestream( chan->monitor->read_stream, f ) < 0 ) { - ast_log(LOG_WARNING, "Failed to write data to channel monitor read stream\n"); - } - } + } pthread_mutex_unlock(&chan->lock); /* Run any generator sitting on the line */