diff --git a/main/cdr.c b/main/cdr.c
index b5df79fc78cd6b7effcc292b28b9a964e23b95c3..b6a0b428c98257dec6c7e29fd4328a7e2ca61f00 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -2976,7 +2976,7 @@ int ast_cdr_setvar(const char *channel_name, const char *name, const char *value
 		for (it_cdr = cdr; it_cdr; it_cdr = it_cdr->next) {
 			struct varshead *headp = NULL;
 
-			if (it_cdr->fn_table == &finalized_state_fn_table) {
+			if (it_cdr->fn_table == &finalized_state_fn_table && it_cdr->next != NULL) {
 				continue;
 			}
 			if (!strcasecmp(channel_name, it_cdr->party_a.snapshot->name)) {