From 3327e532faaf614976dbed1a691d85253e0db3c7 Mon Sep 17 00:00:00 2001
From: Steve Murphy <murf@digium.com>
Date: Thu, 21 Jun 2007 22:41:05 +0000
Subject: [PATCH] Merged revisions 70949 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.4

................
r70949 | murf | 2007-06-21 16:34:41 -0600 (Thu, 21 Jun 2007) | 9 lines

Merged revisions 70948 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r70948 | murf | 2007-06-21 16:29:50 -0600 (Thu, 21 Jun 2007) | 1 line

This little fix is in response to bug 10016, but may not cure it. The code is wrong, clearly. In a situation where you set the CDR's amaflags, and then ForkCDR, and then set the new CDR's amaflags to some other value, you will see that all CDRs have had their amaflags changed. This is not good. So I fixed it.
........

................


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@70951 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 main/cdr.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/main/cdr.c b/main/cdr.c
index d19f6a8ad2..11dbc56a99 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -848,8 +848,11 @@ int ast_cdr_setamaflags(struct ast_channel *chan, const char *flag)
 	struct ast_cdr *cdr;
 	int newflag = ast_cdr_amaflags2int(flag);
 	if (newflag) {
-		for (cdr = chan->cdr; cdr; cdr = cdr->next)
-			cdr->amaflags = newflag;
+		for (cdr = chan->cdr; cdr; cdr = cdr->next) {
+			if (!ast_test_flag(cdr, AST_CDR_FLAG_LOCKED)) {
+				cdr->amaflags = newflag;
+			}
+		}
 	}
 
 	return 0;
-- 
GitLab