[Asterisk-Users] Dial Command Doesn't return Correctly! (Bug?)

Douglas Garstang dgarstang at oneeighty.com
Fri Dec 9 22:23:35 MST 2005


I have a really really weird problem here!
I'm trying to dial a proxy server, and when that fails, dial another, and finally take some action such as play a sound file.
 
I found that if the proxy server isn't up, Asterisk returns a CONGESTION on the channel, and if the proxy server is up but returns a "404 Not Found", Asterisk returns CHANUNAVAIL.
So, I tried to write some logic around that.
 
When I issue the first dial command, and the proxy server isn't up or returns a "Not Found", Asterisk ***immediately returns control*** and jumps to the CONGESTION or CHANUNAVAIL paths. It then goes on to dial the second proxy server. This proxy server is NOT RUNNING, but Asterisk doesn't immediately return like it did for the first one. It just keeps sending INVITES every few seconds until the 20s dial timeout is up. When that timeout expires it displays on the console that the channel was NOANSWER. This is wrong!!!
 
Also, when asterisk immediately returns after the first dial command fails, it displays the following on the console:
"Unable to create channel of type 'SIP' (cause 3 - No route to destination"
 
Good! But on the SECOND dial, it does not display this. As I said, it just keeps sending INVITE's to a system that is down (CHANUNAVAIL) for the full 20s and then returns status NOANSWER.
 
Why is it doing this? Arrgh!
Files pasted below.
 
Help would be very much appreciated!
 
extensions.conf:
[test]
exten => _1.,1,NoOp(Calling macro DialProxy)
exten => _1.,n,Macro(DialProxy,${EXTEN})
 
[macro-DialProxy];
exten => s,1,Dial(SIP/${ARG1}@proxy1,20,tr <mailto:SIP/${ARG1}@proxy1,20,tr> )
exten => s,2,Goto(s-${DIALSTATUS},1)                          ; Gets excuted as it should, because 
 
exten => s-CONGESTION,1,Goto(s,20)
exten => s-CHANUNAVAIL,1,Goto(s,20)
 
exten => s,20,Dial(SIP/${ARG1}@proxy2,20,tr <mailto:SIP/${ARG1}@proxy2,20,tr> )
exten => s,21,Goto(s2-${DIALSTATUS},1)                      ; Never gets executed eventhough channel is CHANUNAVAIL. Why???
 
exten => s2-CONGESTION,1,Playback(all-outgoing-lines-unavailable)             
exten => s2-CHANUNAVAIL,1,Playback(all-outgoing-lines-unavailable)
 
sip.conf:
[proxy1]
type=peer
context=test
host=192.168.10.24
insecure=very
qualify=yes
 
[proxy2]
type=peer
context=test
host=192.168.10.25
insecure=very
qyalify=yes


More information about the asterisk-users mailing list