]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Only do frame payload check for HOLD frames.
authorRussell Bryant <russell@russellbryant.com>
Fri, 4 Dec 2009 17:12:47 +0000 (17:12 +0000)
committerRussell Bryant <russell@russellbryant.com>
Fri, 4 Dec 2009 17:12:47 +0000 (17:12 +0000)
This code was added for helping to debug the source of invalid HOLD frames.
However, a side effect of this is that it will incorrectly report errors for
frames that have an integer payload.  Make the check for this block specific
to the HOLD frame case.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@233092 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/channel.c

index bfbe49f6ff0faaa5524181769c3b1b4421e6bb3b..75d4f72dbfa6e604291b97567bc0818aa2b94d00 100644 (file)
@@ -2513,15 +2513,15 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio)
                ast_frame_dump(chan->name, f, "<<");
        chan->fin = FRAMECOUNT_INC(chan->fin);
 
-       if (f && f->datalen == 0 && f->data) {
+       if (f && f->frametype == AST_FRAME_CONTROL && f->subclass == AST_CONTROL_HOLD && f->datalen == 0 && f->data) {
                /* fix invalid pointer */
                f->data = NULL;
 #ifdef AST_DEVMODE
-               ast_log(LOG_ERROR, "Found frame with src '%s' on channel '%s' with datalen zero, but non-null data pointer!\n", f->src, chan->name);
+               ast_log(LOG_ERROR, "Found HOLD frame with src '%s' on channel '%s' with datalen zero, but non-null data pointer!\n", f->src, chan->name);
                ast_frame_dump(chan->name, f, "<<");
 #else
                if (option_debug > 2) {
-                       ast_log(LOG_DEBUG, "Found frame with src '%s' on channel '%s' with datalen zero, but non-null data pointer!\n", f->src, chan->name);
+                       ast_log(LOG_DEBUG, "Found HOLD frame with src '%s' on channel '%s' with datalen zero, but non-null data pointer!\n", f->src, chan->name);
                }
 #endif
        }