From c5e64b2ac419ebec6b2ca08069018709ea6936f0 Mon Sep 17 00:00:00 2001
From: Steve Murphy <murf@digium.com>
Date: Tue, 25 Nov 2008 23:03:01 +0000
Subject: [PATCH] Merged revisions 159316 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r159316 | murf | 2008-11-25 15:41:10 -0700 (Tue, 25 Nov 2008) | 15 lines

(closes issue #12694)
Reported by: yraber
Patches:
      12694.2nd.diff uploaded by murf (license 17)
Tested by: murf, laurav

Thanks to file (Joshua Colp) for his IAX fix.

the change to cdr.c allows no-answer to percolate
up into CDR's, and feels like the right place to
locate this fix; if BUSY is done here, no-answer
should be, too.



........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@159360 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_iax2.c | 7 +++++++
 main/cdr.c           | 3 +++
 2 files changed, 10 insertions(+)

diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 38fb9983b6..378550a993 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -8688,6 +8688,13 @@ retryowner:
 				iaxs[fr->callno]->videoformat = f.subclass & ~0x1;
 			}
 		}
+		if (f.frametype == AST_FRAME_CONTROL && iaxs[fr->callno]->owner) {
+			if (f.subclass == AST_CONTROL_BUSY) {
+				iaxs[fr->callno]->owner->hangupcause = AST_CAUSE_BUSY;
+			} else if (f.subclass == AST_CONTROL_CONGESTION) {
+				iaxs[fr->callno]->owner->hangupcause = AST_CAUSE_CONGESTION;
+			}
+		}
 		if (f.frametype == AST_FRAME_IAX) {
 			AST_SCHED_DEL(sched, iaxs[fr->callno]->initid);
 			/* Handle the IAX pseudo frame itself */
diff --git a/main/cdr.c b/main/cdr.c
index e4d5f759dc..f48ddf38d1 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -754,6 +754,9 @@ int ast_cdr_disposition(struct ast_cdr *cdr, int cause)
 		case AST_CAUSE_BUSY:
 			ast_cdr_busy(cdr);
 			break;
+		case AST_CAUSE_NO_ANSWER:
+			ast_cdr_noanswer(cdr);
+			break;
 		case AST_CAUSE_NORMAL:
 			break;
 		default:
-- 
GitLab