diff --git a/main/cdr.c b/main/cdr.c
index 43b92aea99a901fecbbf1fba89891a08d9887744..16fa842ea14baeb08ffd563c2ba19837e86e77da 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -977,6 +977,8 @@ static void post_cdr(struct ast_cdr *cdr)
 	struct ast_cdr_beitem *i;
 
 	for ( ; cdr ; cdr = cdr->next) {
+		if (cdr->disposition < AST_CDR_ANSWERED && (ast_strlen_zero(cdr->channel) || ast_strlen_zero(cdr->dstchannel)))
+			continue; /* people don't want to see unanswered single-channel events */
 		chan = S_OR(cdr->channel, "<unknown>");
 		check_post(cdr);
 		if (ast_tvzero(cdr->end))