[Asterisk-Users] chan_local environments: unexpected results
John Todd
jtodd at loligo.com
Sun Sep 7 14:15:35 MST 2003
I'm having some difficulty with chan_local dial requests. It seems
that when a chan_local call is picked up, that the native bridge
"pops" the environment back to the settings of the original call.
This is unexpected and leads to very frustrating results. My
example below is a very distilled sample of a much more complex
dialplan problem I'm having with chan_local, but it illustrates the
point.
In my example below, the variable MYTEST is set in the "original"
call. Then, the call is handed to chan_local at a different dialed
number. Then, as expected, a new environment is set up, and I cannot
see the value I set for MYTEST in this new environment - so far,so
goo. I create another variable called OTHERTEST in this new
environment.
However, as soon as the "Answer" application is called, I see the
Local channel hangs up. Suddenly, the environment of the call is
handed back to the original call's settings! This seems
counter-intuitive, since my dial plan is following a path and
expecting variable settings that may not be available in the original
call's environment. I would think that Local calls would be
"sandboxed" such that they cannot see the environments from other
calls, since that is how all the other channel types work...
Is this the expected behavior?
JT
Calls are handed from my SIP phone directly to [local]. The user at
SIP extension 2209 is not registered, so the "Busy" (priority 105 in
this case) routines will be called.
[local]
exten => 2213,1,SetVar(MYTEST=ishouldnotseethis)
exten => 2213,2,Dial(Local/2209 at local)
exten => 2209,1,SetVar(OTHERTEST=goodness)
exten => 2209,2,NoOp(${MYTEST})
exten => 2209,3,NoOp(${OTHERTEST})
exten => 2209,4,Dial(SIP/2209)
exten => 2209,105,Answer
exten => 2209,106,Playback(invalid)
exten => 2209,107,NoOp(${MYTEST})
exten => 2209,108,NoOp(${OTHERTEST})
exten => 2209,109,Hangup
ms1*CLI>
-- Executing SetVar("SIP/2203-2496", "MYTEST=ishouldnotseethis")
in new stack
-- Executing Dial("SIP/2203-2496", "Local/2209 at local") in new stack
-- Called 2209 at local
-- Executing SetVar("Local/2209 at local-2af6,2",
"OTHERTEST=goodness") in new stack
-- Executing NoOp("Local/2209 at local-2af6,2", "") in new stack
-- Executing NoOp("Local/2209 at local-2af6,2", "goodness") in new stack
-- Executing Dial("Local/2209 at local-2af6,2", "SIP/2209") in new stack
== Everyone is busy at this time
-- Executing Answer("Local/2209 at local-2af6,2", "") in new stack
-- Local/2209 at local-2af6,1 answered SIP/2203-2496
-- Executing Playback("Local/2209 at local-2af6,2", "invalid") in new stack
-- Playing 'invalid'
== Spawn extension (local, 2213, 2) exited non-zero on
'Local/2209 at local-2af6,2<ZOMBIE>'
ms1*CLI> [I hear the recording on my SIP phone at this point]
ms1*CLI>
-- Executing NoOp("SIP/2203-2496", "ishouldnotseethis") in new stack
-- Executing NoOp("SIP/2203-2496", "") in new stack
-- Executing Hangup("SIP/2203-2496", "") in new stack
== Spawn extension (local, 2209, 109) exited non-zero on 'SIP/2203-2496'
ms1*CLI>
More information about the asterisk-users
mailing list