From a65727949c9b3dfd3c0ee4a88b3f635966ae8b19 Mon Sep 17 00:00:00 2001 From: Joshua Colp Date: Tue, 3 Mar 2009 14:40:04 +0000 Subject: Merged revisions 179671 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r179671 | file | 2009-03-03 10:38:09 -0400 (Tue, 03 Mar 2009) | 3 lines Move where fdno is set to the default value to *after* the read callback of the channel driver is called. We have to do this as the underlying channel driver may need the fdno value to determine what to read. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@179672 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/channel.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/main/channel.c b/main/channel.c index 91419a76f..5197a7e21 100644 --- a/main/channel.c +++ b/main/channel.c @@ -2489,12 +2489,6 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio) } prestate = chan->_state; - /* - * Reset the recorded file descriptor that triggered this read so that we can - * easily detect when ast_read() is called without properly using ast_waitfor(). - */ - chan->fdno = -1; - /* Read and ignore anything on the alertpipe, but read only one sizeof(blah) per frame that we send from it */ if (chan->alertpipe[0] > -1) { @@ -2615,6 +2609,12 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio) ast_log(LOG_WARNING, "No read routine on channel %s\n", chan->name); } + /* + * Reset the recorded file descriptor that triggered this read so that we can + * easily detect when ast_read() is called without properly using ast_waitfor(). + */ + chan->fdno = -1; + if (f) { /* if the channel driver returned more than one frame, stuff the excess into the readq for the next ast_read call (note that we can safely assume -- cgit v1.2.3