From: Mark Michelson Date: Wed, 8 Apr 2009 15:26:46 +0000 (+0000) Subject: Make a couple of changes with regards to a new message printed in ast_read(). X-Git-Tag: 1.4.25-rc1~74 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6562e1025c8534c6bf325456a42a317cb698671e;p=thirdparty%2Fasterisk.git Make a couple of changes with regards to a new message printed in ast_read(). "ast_read() called with no recorded file descriptor" is a new message added after a bug was discovered. Unfortunately, it seems there are a bunch of places that potentially make such calls to ast_read() and trigger this error message to be displayed. This commit does two things to help to make this message appear less. First, the message has been downgraded to a debug level message if dev mode is not enabled. The message means a lot more to developers than it does to end users, and so developers should take an effort to be sure to call ast_read only when a channel is ready to be read from. However, since this doesn't actually cause an error in operation and is not something a user can easily fix, we should not spam their console with these messages. Second, the message has been moved to after the check for any pending masquerades. ast_read() being called with no recorded file descriptor should not interfere with a masquerade taking place. This could be seen as a simple way of resolving issue #14723. However, I still want to try to clear out the existing ways of triggering this message, since I feel that would be a better resolution for the issue. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@186984 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/channel.c b/main/channel.c index bfe3183bdd..8ba8c61669 100644 --- a/main/channel.c +++ b/main/channel.c @@ -2039,12 +2039,6 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio) usleep(1); } - if (chan->fdno == -1) { - ast_log(LOG_ERROR, "ast_read() called with no recorded file descriptor.\n"); - f = &ast_null_frame; - goto done; - } - if (chan->masq) { if (ast_do_masquerade(chan)) ast_log(LOG_WARNING, "Failed to perform masquerade\n"); @@ -2053,6 +2047,18 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio) goto done; } + if (chan->fdno == -1) { +#ifdef AST_DEVMODE + ast_log(LOG_ERROR, "ast_read() called with no recorded file descriptor.\n"); +#else + if (option_debug > 1) { + ast_log(LOG_DEBUG, "ast_read() called with no recorded file descriptor.\n"); + } +#endif + f = &ast_null_frame; + goto done; + } + /* Stop if we're a zombie or need a soft hangup */ if (ast_test_flag(chan, AST_FLAG_ZOMBIE) || ast_check_hangup(chan)) { if (chan->generator)