Index: wp-comments-post.php
===================================================================
--- wp-comments-post.php	(revision 13182)
+++ wp-comments-post.php	(working copy)
@@ -23,19 +23,19 @@
 
 if ( empty($status->comment_status) ) {
 	do_action('comment_id_not_found', $comment_post_ID);
-	exit;
+	wp_die( __('Error: Request not understood. Please go back and try again.'), '', array('response' => 400) );
 } elseif ( !comments_open($comment_post_ID) ) {
 	do_action('comment_closed', $comment_post_ID);
-	wp_die( __('Sorry, comments are closed for this item.') );
+	wp_die( __('Sorry, comments are closed for this item.'), '', array('response' => 403) );
 } elseif ( in_array($status->post_status, array('draft', 'future', 'pending') ) ) {
 	do_action('comment_on_draft', $comment_post_ID);
-	exit;
+	wp_die( __('Sorry, comments are closed for this item.'), '', array('response' => 403) );
 } elseif ( 'trash' == $status->post_status ) {
 	do_action('comment_on_trash', $comment_post_ID);
-	exit;
+	wp_die( __('Sorry, comments are closed for this item.'), '', array('response' => 403) );
 } elseif ( post_password_required($comment_post_ID) ) {
 	do_action('comment_on_password_protected', $comment_post_ID);
-	exit;
+	wp_die( __('Sorry, you must enter the password for this item.'), '', array('response' => 403) );
 } else {
 	do_action('pre_comment_on_post', $comment_post_ID);
 }
@@ -61,20 +61,26 @@
 	}
 } else {
 	if ( get_option('comment_registration') || 'private' == $status->post_status )
-		wp_die( __('Sorry, you must be logged in to post a comment.') );
+		wp_die( __('Sorry, you must be logged in to post a comment.'), '', array('response' => 403) );
 }
 
 $comment_type = '';
 
 if ( get_option('require_name_email') && !$user->ID ) {
 	if ( 6 > strlen($comment_author_email) || '' == $comment_author )
-		wp_die( __('Error: please fill the required fields (name, email).') );
+		wp_die( __('Error: please fill the required fields (name, email).'), '', array('response' => 400) );
 	elseif ( !is_email($comment_author_email))
-		wp_die( __('Error: please enter a valid email address.') );
+		wp_die( __('Error: please enter a valid email address.'), '', array('response' => 400) );
 }
 
-if ( '' == $comment_content )
-	wp_die( __('Error: please type a comment.') );
+if ( '' == $comment_content ) {
+	// User did not submit anything, bounce back to post.
+	$comment = NULL;
+	$location = empty($_POST['redirect_to']) ? get_permalink($comment_post_ID) : $_POST['redirect_to'];
+	$location = apply_filters('comment_post_redirect', $location, $comment);
+	wp_redirect($location);
+	exit;
+}
 
 $comment_parent = isset($_POST['comment_parent']) ? absint($_POST['comment_parent']) : 0;
 
Index: wp-includes/comment.php
===================================================================
--- wp-includes/comment.php	(revision 13182)
+++ wp-includes/comment.php	(working copy)
@@ -550,7 +550,7 @@
 		if ( defined('DOING_AJAX') )
 			die( __('Duplicate comment detected; it looks as though you&#8217;ve already said that!') );
 
-		wp_die( __('Duplicate comment detected; it looks as though you&#8217;ve already said that!') );
+		wp_die( __('Duplicate comment detected; it looks as though you&#8217;ve already said that!'), '', array('response' => 400) );
 	}
 
 	do_action( 'check_comment_flood', $comment_author_IP, $comment_author_email, $comment_date_gmt );
@@ -610,7 +610,7 @@
 			if ( defined('DOING_AJAX') )
 				die( __('You are posting comments too quickly.  Slow down.') );
 
-			wp_die( __('You are posting comments too quickly.  Slow down.'), '', array('response' => 403) );
+			wp_die( __('You are posting comments too quickly.  Slow down.'), '', array('response' => 400) );
 		}
 	}
 }
