]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 179672 via svnmerge from
authorJoshua Colp <jcolp@digium.com>
Tue, 3 Mar 2009 14:41:57 +0000 (14:41 +0000)
committerJoshua Colp <jcolp@digium.com>
Tue, 3 Mar 2009 14:41:57 +0000 (14:41 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

................
  r179672 | file | 2009-03-03 10:40:04 -0400 (Tue, 03 Mar 2009) | 10 lines

  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/branches/1.6.1@179674 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/channel.c

index d4a58469f87bfd2b53a8ecab02d9fe3d8a54a24f..18d757bae705e2ea80b82741b5c6040267b621cf 100644 (file)
@@ -2464,12 +2464,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) {
@@ -2590,6 +2584,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