[Home]

Summary:ASTERISK-20287: Broken hangupcause passtrough
Reporter:Konstantin Suvorov (berlic)Labels:
Date Opened:2012-08-21 01:30:30Date Closed:2012-08-29 13:24:07
Priority:MajorRegression?Yes
Status:Closed/CompleteComponents:Applications/app_dial
Versions:1.8.15.0 1.8.16.0 Frequency of
Occurrence
Constant
Related
Issues:
must be completed before resolvingASTERISK-20308 Asterisk 1.8.16.0 Blockers
must be completed before resolvingASTERISK-20309 Asterisk 10.8.0 Blockers
Environment:Attachments:( 0) app_dial_hangupcause.patch
Description:Setup: [PBX1] -- IAX2 -- [PBX2]
When you dial from PBX1 with 'g' option, and execute Hangup(custom-cause-code) on PBX2, custom-cause-code will NOT be set to HANGUPCAUSE variable on PBX1.

PBX1 dialplan excerpt:
...
same => n(dial),Dial(IAX2/${LOGIN}:${PASSWORD}@${HOST}:${PORT}/client,5,g)
same => n,NoOp(Hangup cause: ${HANGUPCAUSE})
...

PBX2 dialplan excerpt:
...
same => n,Hangup(1)

In this setup you will get hangupcause=16 instead of expected 1.

I think this is caused by misplaces 'else' statement in app_dial.c (Revision: 369258, Line 2999) after 1.8.15.0 update.
In 1.8.13.0 (and I think in 1.8.14.x) it was OK.

Please fix this, cause this breaks advanced phone routing schemes.
Comments:By: Konstantin Suvorov (berlic) 2012-08-22 09:21:47.566-0500

This is a patch to fix the problem. Works well in my routing schemes.
But I'm not 100% sure it is correct.
Please revise the code.