On 170103 2114, Richard Mudgett wrote:
On Tue, Jan 3, 2017 at 9:38 PM, Kirill Katsnelson <[email protected]>
wrote:

With Asterisk 1.8 we were relying on the behavior of Originate with Local
channels as mentioned in https://issues.asterisk.org/ji
ra/browse/ASTERISK-17239. This no longer works in Asterisk 13.

You were definitely depending upon an implementation detail and some luck
on when the optimization would happen.  Asterisk versions before v12 used
masquerades to implement local channel optimizations.  The channel
executing dialplan before the wait turns into a different channel after the
wait because of the masquerade.  The wait simply made the local channel
optimization more likely to happen during the wait because the optimization
could happen any time during the exchange of media frames.  Asterisk v12+
no longer optimizes local channels this way.  Instead it moves a channel
from one bridge to another.  (See discussion on
https://issues.asterisk.org/jira/browse/ASTERISK-26681)

Richard, thanks for the explanation and notes. I pretty much suspected that I was relying on undefined behavior.

I am thinking of using the IMPORT() function to get channel variables from the second "half" of the Local channel. That works, but I have to rely on knowing the naming scheme of the channels: drop the last character, which is the '1' after the ';', and then add a '2').

  P = "${CHANNEL(name):0:-1}2";  // Local/Sample@test-local-00000007;2
  Q = "${IMPORT(${P},QUUX)}";

But this also a bit hackish. Is this naming scheme not going to change so I can rely on it? Can you maybe think of a more canonical/kosher/reliable approach?

 -kkm


--
_____________________________________________________________________
-- 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

Reply via email to