From c7c3fa1d53032f4e899cb7a99aa5976b99726162 Mon Sep 17 00:00:00 2001
From: "Kevin P. Fleming" <kpfleming@digium.com>
Date: Tue, 15 Nov 2005 20:56:19 +0000
Subject: [PATCH] issue #5672

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7106 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 ChangeLog               |  2 ++
 channels/chan_alsa.c    | 10 ++++++++--
 channels/chan_oss_old.c |  1 +
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index da22209eb0..bfa067675d 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2005-11-15  Kevin P. Fleming  <kpfleming@limerick.digium.com>
 
+	* channels/chan_alsa.c (alsa_hangup): handle autohangup properly (issue #5672)
+
 	* channels/chan_misdn.c (and other files): various fixes (issue #5739)
 
 	* channels/chan_sip.c (handle_request_info): properly forward 'flash' events received via SIP INFO (issue #5751, different patch)
diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c
index 961abef544..9bef8f3c72 100755
--- a/channels/chan_alsa.c
+++ b/channels/chan_alsa.c
@@ -582,8 +582,14 @@ static int alsa_hangup(struct ast_channel *c)
 	usecnt--;
 	ast_mutex_unlock(&usecnt_lock);
 	if (hookstate) {
-		res = 2;
-		write(sndcmd[1], &res, sizeof(res));
+		if (autoanswer) {
+			hookstate = 0;
+		} else {
+			/* Congestion noise */
+			res = 2;
+			write(sndcmd[1], &res, sizeof(res));
+			hookstate = 0;
+		}
 	}
 	snd_pcm_drop(alsa.icard);
 	ast_mutex_unlock(&alsalock);
diff --git a/channels/chan_oss_old.c b/channels/chan_oss_old.c
index 1450703b4a..c1613d3b66 100755
--- a/channels/chan_oss_old.c
+++ b/channels/chan_oss_old.c
@@ -565,6 +565,7 @@ static int oss_hangup(struct ast_channel *c)
 			/* Make congestion noise */
 			res = 2;
 			write(sndcmd[1], &res, sizeof(res));
+			hookstate = 0;
 		}
 	}
 	return 0;
-- 
GitLab