Summary:ASTERISK-21954: Local channel optimization needs to take into account frame hooks on the local channels.
Reporter:Richard Mudgett (rmudgett)Labels:Asterisk12
Date Opened:2013-06-24 17:43:57Date Closed:2013-07-19 13:00:03
Versions:Frequency of
Description:When a local channel determines that it can optimize, it needs to do something about any frame hooks on the local channels.
A - bridge - L;1 -- L;2 - bridge - B

Any frame hooks on L;1 need to be moved to B.
Any frame hooks on L;2 need to be moved to A.

A frame hook moved during optimization could miss a frame from the destination channel.  The frame may already be read by the destination channel because the channel thread is blocked trying to write that frame into the bridge.

A frame hook moved during optimization could process a variable number of frames to the destination channel again.  The already processed frames could still be waiting in the write queue from the bridge for the destination channel.

If the optimization involves multi-party bridges, the presence of frame hooks may prevent optimization.
Comments:By: Matt Jordan (mjordan) 2013-07-07 19:53:11.537-0500

Should a framehook simply prevent optimization?

By: Richard Mudgett (rmudgett) 2013-07-18 16:02:48.343-0500

That is what I am going to do.  Prevent optimization.  Moving audiohooks and framehooks is not good because of the points brought up in the summary.  I am also going to prevent optimization if a monitor is active.