From: Joshua Colp Date: Tue, 3 Mar 2009 14:38:09 +0000 (+0000) Subject: Move where fdno is set to the default value to *after* the read callback of the chann... X-Git-Tag: 1.4.24-rc1~15 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3f2a1247f47ea2aa46075fdfc880ef4bd0b736d3;p=thirdparty%2Fasterisk.git 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/branches/1.4@179671 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/channel.c b/main/channel.c index 8275456d41..58861add9c 100644 --- a/main/channel.c +++ b/main/channel.c @@ -2061,12 +2061,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) { @@ -2191,6 +2185,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