-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/3908/
-----------------------------------------------------------
(Updated Aug. 20, 2014, 4:21 p.m.)
Review request for Asterisk Developers, kmoore, Matt Jordan, and rmudgett.
Changes
-------
More stringent checking for if the channel is still in a bridge plus command
destructors added to the command queue
Bugs: ASTERISK-24147
https://issues.asterisk.org/jira/browse/ASTERISK-24147
Repository: Asterisk
Description
-------
Here's a basic rundown of what was happening:
1. Stasis application with a channel in it, channel is in a bridge. Playback
actions for the channel are queued, the stasis control is running them.
2. The channel hangs up. Because the stasis control detects a hangup and the
depart is expected to be handled when the channel leaves the bridge, the stasis
application execution function exits taking the control along with it. When the
PBX thread exits, the channel is considered fully hung up and leaves the
bridging core. At this point we are running after bridge callbacks with, one of
which holds a pointer to a dead control object that we are trying to do all
queue actions to along with other things. This causes the crash.
In order to fix this, I made sure that if the control execution loop is exited
without pulling the channel out of the bridge that the channel depart would
occur manually and the control would be marked so that the after bridge cb
wouldn't attempt to exit the bridge in this case. This wasn't actually causing
problems, but Richard and I both have concerns about an after bridge callback
attempting to depart a channel from a bridge... it seems a little out there.
Diffs (updated)
-----
/branches/12/res/stasis/stasis_bridge.c 421424
/branches/12/res/stasis/control.c 421424
/branches/12/res/stasis/command.c 421424
/branches/12/res/stasis/command.h 421424
/branches/12/res/res_stasis_recording.c 421424
/branches/12/res/res_stasis_playback.c 421424
/branches/12/res/res_stasis_answer.c 421424
/branches/12/res/res_stasis.c 421424
/branches/12/include/asterisk/stasis_app_impl.h 421424
Diff: https://reviewboard.asterisk.org/r/3908/diff/
Testing
-------
Made sure the crash that was happening no longer occurs
Tested long queues of playback to check what would happen with the additional
playbacks. Each subsequent playback from the one currently running fails (in
an expected manner) and reports its failure over stasis. Nothing too odd there.
Thanks,
Jonathan Rose
--
_____________________________________________________________________
-- 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