Merged revisions 318142 via svnmerge from
authorMatthew Nicholson <mnicholson@digium.com>
Mon, 9 May 2011 14:11:57 +0000 (14:11 +0000)
committerMatthew Nicholson <mnicholson@digium.com>
Mon, 9 May 2011 14:11:57 +0000 (14:11 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.8

........
  r318142 | mnicholson | 2011-05-09 09:09:38 -0500 (Mon, 09 May 2011) | 9 lines

  Make indicate/control frames WRITE events on framehooks.  Also, if a framehook
  returns a non-control frame, don't forward it to the channel.

  (closes issue #19251)
  Reported by: irroot
  Patches:
        (modified) framehook_indicate.patch2 uploaded by irroot (license 52)
  Tested by: irroot
........

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

main/channel.c

index 37e5479..35fdea7 100644 (file)
@@ -4323,7 +4323,9 @@ int ast_indicate_data(struct ast_channel *chan, int _condition,
                awesome_frame = ast_frdup(&frame);
 
                /* who knows what we will get back! the anticipation is killing me. */
-               if (!(awesome_frame = ast_framehook_list_read_event(chan->framehooks, awesome_frame))) {
+               if (!(awesome_frame = ast_framehook_list_write_event(chan->framehooks, awesome_frame))
+                       || awesome_frame->frametype != AST_FRAME_CONTROL) {
+
                        res = 0;
                        goto indicate_cleanup;
                }