diff --git a/funcs/func_cdr.c b/funcs/func_cdr.c
index 1220a8201afe1630fbd0267801f93e72e742ab36..1a6dc07ec0acb89e94bb0f98d65643ca2dbbc775 100755
--- a/funcs/func_cdr.c
+++ b/funcs/func_cdr.c
@@ -64,9 +64,6 @@ static void builtin_function_cdr_write(struct ast_channel *chan, char *cmd, char
 	if (!data || ast_strlen_zero(data) || !value)
 		return;
 	
-	if (!chan->cdr)
-		return;
-
 	mydata = ast_strdupa(data);
 	argc = ast_separate_app_args(mydata, '|', argv, sizeof(argv) / sizeof(argv[0]));
 
@@ -81,7 +78,7 @@ static void builtin_function_cdr_write(struct ast_channel *chan, char *cmd, char
 		ast_cdr_setaccount(chan, value);
 	else if (!strcasecmp(argv[0], "userfield"))
 		ast_cdr_setuserfield(chan, value);
-	else
+	else if (chan->cdr)
 		ast_cdr_setvar(chan->cdr, argv[0], value, recursive);
 }