[Home]

Summary:ASTERISK-15925: Busy(xx) exits immediately on IAX channel
Reporter:James Lamanna (jlamanna)Labels:
Date Opened:2010-04-08 00:30:35Date Closed:2014-07-01 21:59:07
Priority:MinorRegression?No
Status:Closed/CompleteComponents:Applications/General
Versions:Frequency of
Occurrence
Related
Issues:
is related toASTERISK-23979 IAX2 trunk dial status and hangup cause not sent to SIP endpoint
Environment:Attachments:
Description:I'm running Asterisk 1.4.26.3 and I've noticed an interesting problem
when trying to play a Busy tone over a IAX trunk from the PSTN.
It seems as though Busy(20) returns immediately (it does not
wait 20s), so the caller never hears the busy tone, but
the call just appears to hang up.
I don't believe this happens when trying to play a Busy on a SIP trunk.

The busy part of the dialplan looks like this,

exten => s-BUSY,1,Noop(Dial failed due to trunk reporting BUSY - giving up)
exten => s-BUSY,n,Playtones(busy)
exten => s-BUSY,n,Busy(20)

The only way to remedy this is to put a Wait(20) between the
Playtones() and Busy().
Any ideas on why this only fails on IAX and not SIP?

I cannot test a later version of Asterisk because of the SIP relay bug.
Comments:By: Paul Belanger (pabelanger) 2010-04-08 08:27:02

Thank you for taking the time to report this bug and helping to make Asterisk better. Unfortunately, we cannot work on this bug because your description didn't include enough information. You may find it helpful to read "Asterisk Issue Guidelines" http://www.asterisk.org/developers/bug-guidelines. [^] We'd be grateful if you would then provide a more complete description of the problem.

At a minimum, we need:
1. the specific steps or actions you took that caused you to encounter the problem,
2. the behavior you expected, and
3. the behavior you actually encountered (in as much detail as possible).

This likely includes output from the console with debug level logging, a SIP trace (if this is SIP related), and configuration information such as dialplan (e.g. extensions.conf) and channel configuration (e.g. sip.conf).

Thanks!

By: James Lamanna (jlamanna) 2010-04-08 10:50:00

Sorry I wasn't more clear.

Lets say you have a phone P, and 2 asterisk boxes A & B.
- A & B have an IAX trunk (to-pstn) set up between them.
- B has a PSTN connection (PRI)
- P is registered to A.

P tries to dial out, so you have executed on A:
Dial(IAX2/to-pstn/1xxxxxxxxxx)

This triggers B's dialplan to dialout to the PRI at some point:

[macro-dialout-trunk]
...
exten => s,n,Dial(Zap/g0/${NUMBER},300)
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-BUSY,1,Noop(Dial failed due to trunk reporting busy)
exten => s-BUSY,n,Playtones(busy)
exten => s-BUSY,n,Busy(20)

At this point say the Dial command returns DIALSTATUS == BUSY.
You would expect Busy(20) to wait for 20 seconds before the call is hungup so that the caller at phone P can hear the busy tone. However, Busy(20) returns immediately, so the caller at phone P just sees the line disconnected and hears no busy tone.

Here is a snippet of the logfile that shows Busy(20) returning immediately:

[Apr  7 10:03:28] VERBOSE[23882] logger.c:     -- Executing [s-BUSY@macro-dialout-trunk:4] Busy("IAX2/w2bpstn-15047", "20") in new stack
[Apr  7 10:03:28] VERBOSE[23882] logger.c:   == Spawn extension (macro-dialout-trunk, s-BUSY, 4) exited non-zero on 'IAX2/w2bpstn-15047' in macro 'dialout-trunk'

If the trunk between A & B is SIP, it does not have this problem.

By: James Lamanna (jlamanna) 2010-04-08 10:58:29

IAX trunk configuration on A:
[to-pstn]
context=from-pstn
host=ip.address.B
qualify=yes
secret=xxxxxxxxx
type=peer
username=w2bpstn

IAX trunk configuration on B:
[w2bpstn]
context=from-internal
host=ip.address.A
secret=xxxxxxxxx
type=user

By: Leif Madsen (lmadsen) 2010-04-12 09:31:53

Acknowledging this issue.

By: John Todd (jtodd) 2010-04-27 12:59:10

Playtones doesn't automatically answer the channel -did you answer the channel on this?

By: Leif Madsen (lmadsen) 2010-05-25 14:51:07

Suspending this issue due to lack of feedback from the reporter.