]> git.ipfire.org Git - thirdparty/asterisk.git/commit
core: Cleanup some channel snapshot staging anomalies. 09/4909/2
authorRichard Mudgett <rmudgett@digium.com>
Wed, 8 Feb 2017 20:27:18 +0000 (14:27 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Fri, 10 Feb 2017 17:58:59 +0000 (11:58 -0600)
commit2817f87d27f1056ba970ed74d8798b9214aa214f
tree5cd92ba373f6576d21cac33429ef3f23742ec485
parentcbc23c31cfdcd6096737ec9fc86acb50443720c5
core: Cleanup some channel snapshot staging anomalies.

We shouldn't unlock the channel after starting a snapshot staging because
another thread may interfere and do its own snapshot staging.

* app_dial.c:dial_exec_full() made hold the channel lock while setting up
the outgoing channel staging.  Made hold the channel lock after the called
party answers while updating the caller channel staging.

* chan_sip.c:sip_new() completed the channel staging on off-nominal exit.
Also we need to use ast_hangup() instead of ast_channel_unref() at that
location.

* channel.c:__ast_channel_alloc_ap() added a comment about not needing to
complete the channel snapshot staging on off-nominal exit paths.

* rtp_engine.c:ast_rtp_instance_set_stats_vars() made hold the channel
locks while staging the channels for the stats channel variables.

Change-Id: Iefb6336893163f6447bad65568722ad5d5d8212a
apps/app_dial.c
channels/chan_sip.c
main/channel.c
main/rtp_engine.c