From 4b04032bd8c984c4cf4cc6dbcebe9144d7eed853 Mon Sep 17 00:00:00 2001
From: Arnaldo Pereira <arnaldo@sangoma.com>
Date: Wed, 5 Jan 2011 15:27:20 -0200
Subject: [PATCH] freetdm: ftmod_r2 - set the FTDM_CHANNEL_USER_HANGUP flag
 right before changing chan state to FTDM_CHANNEL_STATE_HANGUP

---
 libs/freetdm/src/ftdm_io.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/libs/freetdm/src/ftdm_io.c b/libs/freetdm/src/ftdm_io.c
index 21354c4442..1b265e154d 100644
--- a/libs/freetdm/src/ftdm_io.c
+++ b/libs/freetdm/src/ftdm_io.c
@@ -2123,8 +2123,6 @@ static ftdm_status_t _ftdm_channel_call_hangup_nl(ftdm_channel_t *chan, const ch
 {
 	ftdm_status_t status = FTDM_SUCCESS;
 	
-	ftdm_set_flag(chan, FTDM_CHANNEL_USER_HANGUP);
-
 	ftdm_set_echocancel_call_end(chan);
 	
 	if (chan->state != FTDM_CHANNEL_STATE_DOWN) {
@@ -2135,6 +2133,7 @@ static ftdm_status_t _ftdm_channel_call_hangup_nl(ftdm_channel_t *chan, const ch
 		if (chan->hangup_timer) {
 			ftdm_sched_cancel_timer(globals.timingsched, chan->hangup_timer);
 		}
+		ftdm_set_flag(chan, FTDM_CHANNEL_USER_HANGUP);
 		status = ftdm_channel_set_state(file, func, line, chan, FTDM_CHANNEL_STATE_HANGUP, 1);
 	} else {
 		/* the signaling stack did not touch the state,