diff options
author | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-07-20 16:37:54 +0000 |
---|---|---|
committer | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-07-20 16:37:54 +0000 |
commit | 0bd98caec205623add8f27a0bc774f2d3373d743 (patch) | |
tree | ec016384abd633e3bdc54779523d0f8ca02da931 /main | |
parent | 464449a7bccb183d89a35f4abeba334e274acd18 (diff) |
Merged revisions 207361 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r207361 | russell | 2009-07-20 11:36:15 -0500 (Mon, 20 Jul 2009) | 16 lines
Merged revisions 207360 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r207360 | russell | 2009-07-20 11:26:24 -0500 (Mon, 20 Jul 2009) | 9 lines
Only do the chan->fdno check in ast_read() in a developer build.
I changed this check to only happen in a dev-mode build. I also added a
comment explaining what is going on. I also made it so that detection of
this situation does not affect ast_read() operation.
(closes issue #14723)
Reported by: seadweller
........
................
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@207362 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main')
-rw-r--r-- | main/channel.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/main/channel.c b/main/channel.c index 5369b2585..7ab59badd 100644 --- a/main/channel.c +++ b/main/channel.c @@ -2581,15 +2581,20 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio) goto done; } - if (chan->fdno == -1) { #ifdef AST_DEVMODE + /* + * The ast_waitfor() code records which of the channel's file descriptors reported that + * data is available. In theory, ast_read() should only be called after ast_waitfor() + * reports that a channel has data available for reading. However, there still may be + * some edge cases throughout the code where ast_read() is called improperly. This can + * potentially cause problems, so if this is a developer build, make a lot of noise if + * this happens so that it can be addressed. + */ + if (chan->fdno == -1) { ast_log(LOG_ERROR, "ast_read() called with no recorded file descriptor.\n"); -#else - ast_debug(2, "ast_read() called with no recorded file descriptor.\n"); -#endif - f = &ast_null_frame; - goto done; } +#endif + prestate = chan->_state; /* Read and ignore anything on the alertpipe, but read only |