Index: wp-comments-post.php
===================================================================
--- wp-comments-post.php	(revision 14100)
+++ wp-comments-post.php	(working copy)
@@ -23,6 +23,7 @@
 
 if ( empty($post->comment_status) ) {
 	do_action('comment_id_not_found', $comment_post_ID);
+	wp_die( __('Sorry, the item you are trying to comment on does not exist.'), '', array('response' => 400) );
 	exit;
 }
 
@@ -33,15 +34,18 @@
 
 if ( !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 ( 'trash' == $status ) {
 	do_action('comment_on_trash', $comment_post_ID);
+	wp_die( __('Sorry, comments are closed for this item.'), '', array('response' => 403) );
 	exit;
 } elseif ( !$status_obj->public ) {
 	do_action('comment_on_draft', $comment_post_ID);
+	wp_die( __('Sorry, comments are closed for this item.'), '', array('response' => 403) );
 	exit;
 } elseif ( post_password_required($comment_post_ID) ) {
 	do_action('comment_on_password_protected', $comment_post_ID);
+	wp_die( __('Sorry, the item you are trying to comment on is password-protected.'), '', array('response' => 403) );
 	exit;
 } else {
 	do_action('pre_comment_on_post', $comment_post_ID);
@@ -68,20 +72,26 @@
 	}
 } else {
 	if ( get_option('comment_registration') || 'private' == $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 14100)
+++ wp-includes/comment.php	(working copy)
@@ -557,7 +557,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 );
@@ -617,7 +617,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) );
 		}
 	}
 }
