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
Versions: Frequency of
must be completed before resolvingASTERISK-20308 Asterisk 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 update.
In (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.