From adefb772c430828b98e4c7f28d3c68d9f69f4847 Mon Sep 17 00:00:00 2001
From: Richard Mudgett <rmudgett@digium.com>
Date: Wed, 29 Aug 2012 18:40:04 +0000
Subject: [PATCH] Fix hangup cause passthrough regression.

The v1.8 -r369258 change to fix the F and F(x) action logic introduced a
regression in passing the hangup cause from the called channel to the
caller channel.

(closes issue ASTERISK-20287)
Reported by: Konstantin Suvorov
Patches:
      app_dial_hangupcause.patch (license #6421) patch uploaded by Konstantin Suvorov (modified)
Tested by: rmudgett
........

Merged revisions 371860 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 371861 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 371862 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@371863 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 apps/app_dial.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/apps/app_dial.c b/apps/app_dial.c
index 355c77fa18..ed1593b30c 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -3065,9 +3065,9 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast
 					/* The peer is now running its own PBX. */
 					goto out;
 				}
-			} else {
-				ast_channel_hangupcause_set(chan, ast_channel_hangupcause(peer));
 			}
+		} else if (!ast_check_hangup(chan)) {
+			ast_channel_hangupcause_set(chan, ast_channel_hangupcause(peer));
 		}
 		ast_autoservice_chan_hangup_peer(chan, peer);
 	}