Index: wp-includes/query.php
===================================================================
--- wp-includes/query.php	(revision 5391)
+++ wp-includes/query.php	(working copy)
@@ -641,6 +641,8 @@
 
 		$this->init_query_flags();
 		$this->is_404 = true;
+		
+		status_header( 404 );
 
 		$this->is_feed = $is_feed;
 	}
Index: wp-includes/wp-db.php
===================================================================
--- wp-includes/wp-db.php	(revision 5391)
+++ wp-includes/wp-db.php	(working copy)
@@ -369,7 +369,8 @@
 	function bail($message) { // Just wraps errors in a nice header and footer
 		if ( !$this->show_errors )
 			return false;
-
+		
+		status_header( 503 );
 		header('Content-Type: text/html; charset=utf-8');
 
 		if (strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false)
Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 5391)
+++ wp-includes/functions.php	(working copy)
@@ -916,24 +916,30 @@
 	$wp->main($query_vars);
 }
 
+function get_status_header_desc( $code ) {
+	global $wp_header_to_desc;
+	
+	$code = (int) $code;
+	
+	if ( isset( $wp_header_to_desc[$code] ) ) {
+		return $wp_header_to_desc[$code];
+	} else {
+		return '';
+	}
+}
+
 function status_header( $header ) {
-	if ( 200 == $header )
-		$text = 'OK';
-	elseif ( 301 == $header )
-		$text = 'Moved Permanently';
-	elseif ( 302 == $header )
-		$text = 'Moved Temporarily';
-	elseif ( 304 == $header )
-		$text = 'Not Modified';
-	elseif ( 404 == $header )
-		$text = 'Not Found';
-	elseif ( 410 == $header )
-		$text = 'Gone';
-
-	if ( version_compare(phpversion(), '4.3.0', '>=') )
-		@header("HTTP/1.1 $header $text", true, $header);
-	else
-		@header("HTTP/1.1 $header $text");
+	$text = get_status_header( $header );
+	
+	if ( empty( $text ) ) {
+		return false;
+	} else {
+		if ( version_compare( phpversion(), '4.3.0', '>=' ) ) {
+			return @header( "HTTP/1.1 $header $text", true, $header );
+		} else {
+			return @header( "HTTP/1.1 $header $text" );
+		}
+	}
 }
 
 function nocache_headers() {
Index: wp-includes/vars.php
===================================================================
--- wp-includes/vars.php	(revision 5391)
+++ wp-includes/vars.php	(working copy)
@@ -35,4 +35,50 @@
 $is_apache = ((strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false) || (strpos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false)) ? true : false;
 $is_IIS = (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false) ? true : false;
 
+$wp_header_to_desc = apply_filters( 'wp_header_to_desc_array', array(
+	100 => 'Continue',
+	101 => 'Switching Protocols',
+	
+	200 => 'OK',
+	201 => 'Created',
+	202 => 'Accepted',
+	203 => 'Non-Authoritative Information',
+	204 => 'No Content',
+	205 => 'Reset Content',
+	206 => 'Partial Content',
+	
+	300 => 'Multiple Choices',
+	301 => 'Moved Permanently',
+	302 => 'Found',
+	303 => 'See Other',
+	304 => 'Not Modified',
+	305 => 'Use Proxy',
+	307 => 'Temporary Redirect',
+	
+	400 => 'Bad Request',
+	401 => 'Unauthorized',
+	403 => 'Forbidden',
+	404 => 'Not Found',
+	405 => 'Method Not Allowed',
+	406 => 'Not Acceptable',
+	407 => 'Proxy Authentication Required',
+	408 => 'Request Timeout',
+	409 => 'Conflict',
+	410 => 'Gone',
+	411 => 'Length Required',
+	412 => 'Precondition Failed',
+	413 => 'Request Entity Too Large',
+	414 => 'Request-URI Too Long',
+	415 => 'Unsupported Media Type',
+	416 => 'Requested Range Not Satisfiable',
+	417 => 'Expectation Failed',
+	
+	500 => 'Internal Server Error',
+	501 => 'Not Implemented',
+	502 => 'Bad Gateway',
+	503 => 'Service Unavailable',
+	504 => 'Gateway Timeout',
+	505 => 'HTTP Version Not Supported'
+) );
+
 ?>
\ No newline at end of file
