bridge: Fix returning to dialplan when executing Bridge() from AMI.
authorJoshua Colp <jcolp@digium.com>
Sun, 30 Apr 2017 21:40:16 +0000 (21:40 +0000)
committerJoshua Colp <jcolp@digium.com>
Thu, 4 May 2017 21:40:04 +0000 (16:40 -0500)
commitc90d81ef5195c71db81ed69782d84ab357787516
tree7c71b96d4f31bd93c9d738876d057627e1f92fb0
parent7b0e3b92fd49e5fbe406ef74336e164eb3f31b6e
bridge: Fix returning to dialplan when executing Bridge() from AMI.

When using the Bridge AMI action on the same channel multiple times
it was possible for the channel to return to the wrong location in
the dialplan if the other party hung up. This happened because the
priority of the channel was not preserved across each action
invocation and it would fail to move on to the next priority in
other cases.

This change makes it so that the priority of a channel is preserved
when taking control of it from another thread and it is incremented
as appropriate such that the priority reflects where the channel
should next be executed in the dialplan, not where it may or may not
currently be.

The Bridge AMI action was also changed to ensure that it too
starts the channels at the next location in the dialplan.

ASTERISK-24529

Change-Id: I52406669cf64208aef7252a65b63ade31fbf7a5a
include/asterisk/channel.h
main/channel.c
main/features.c