----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviewboard.asterisk.org/r/3603/#review12967 -----------------------------------------------------------
I think this should be taken to the asterisk-dev mailing list so we can get a consensus on the exact behavior that should occur here. I realize that this solves the problem for you but I want to make sure everyone is on the same page and in agreement for the resulting behavior. - Joshua Colp On July 30, 2014, 11:19 p.m., Corey Farrell wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviewboard.asterisk.org/r/3603/ > ----------------------------------------------------------- > > (Updated July 30, 2014, 11:19 p.m.) > > > Review request for Asterisk Developers, Joshua Colp and Matt Jordan. > > > Bugs: ASTERISK-22409 > https://issues.asterisk.org/jira/browse/ASTERISK-22409 > > > Repository: Asterisk > > > Description > ------- > > During masquerade it is possible for the AST_JITTERBUFFER_FD to be cleared > (set to -1). This change adds a check when copying channel fd's to prevent > clearing an FD with -1. This seems to resolve the bad audio quality > experienced after the masquerade. When AST_JITTERBUFFER_FD was set to -1, > this prevented the channel from polling that timer. This caused RTP packets > to be received late, and discarded. > > The changes to func_jitterbuffer.c were created first. ast_free(jbframe); is > needed to prevent jbframe from leaking if it is rejected by jb_impl. This > ensures we don't start leaking packets if they are received too late or > rejected by jb_impl for any other reason. > > The second change to func_jitterbuffer prevents a leak of ast_null_frame's > that were duplicated (ie with ast_frdup or ast_frisolate). I believe this > leak might actually be unrelated to the masquerade issue, and likely occurs > for every single ast_null_frame. > > > Diffs > ----- > > /branches/11/main/channel.c 419821 > /branches/11/funcs/func_jitterbuffer.c 419821 > > Diff: https://reviewboard.asterisk.org/r/3603/diff/ > > > Testing > ------- > > Verified the scenario outlined in ASTERISK-22409 no longer experiences audio > quality loss, and no longer causes leaks (tested under valgrind). I patched > asterisk to ensure that ast_frfree performed an immediate free to ensure > valgrind would report any attempted use after free. > > In early testing, I used debug messages instead of the added ast_frfree's - I > verified the leaked frames reported by valgrind matched exactly to the number > of debug messages. > > For the masquerade fix I tested with some debug code that showed the old and > new FD, this is how I found the valid FD being replaced by -1. See JIRA > ticket for example output. > > I have not tested this issue or fix against 12+, but the relevant code is the > same as 11 - func_jitterbuffer code was moved to core but still the same code. > > > Thanks, > > Corey Farrell > >
-- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-dev mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-dev