From ee7d9e9e184928e0381d1809b488f9250925daef Mon Sep 17 00:00:00 2001 From: rob1n Date: Fri, 11 May 2007 03:34:50 +0000 Subject: [PATCH] New status_header code, and WP-DB bail() errors send a 503 Service Unavailable. see #2409 Also, the new header code to text array has 302 as Found. fixes #4183 git-svn-id: http://svn.automattic.com/wordpress/trunk@5446 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/functions.php | 40 +++++++++++++++++++--------------- wp-includes/vars.php | 46 +++++++++++++++++++++++++++++++++++++++ wp-includes/wp-db.php | 3 ++- 3 files changed, 71 insertions(+), 18 deletions(-) diff --git a/wp-includes/functions.php b/wp-includes/functions.php index e7eeacb656..f6b03ef28c 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -916,24 +916,30 @@ function wp($query_vars = '') { $wp->main($query_vars); } -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'; +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 ''; + } +} - if ( version_compare(phpversion(), '4.3.0', '>=') ) - @header("HTTP/1.1 $header $text", true, $header); - else - @header("HTTP/1.1 $header $text"); +function status_header( $header ) { + $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() { diff --git a/wp-includes/vars.php b/wp-includes/vars.php index d33eef4d9a..da8e3f7661 100644 --- a/wp-includes/vars.php +++ b/wp-includes/vars.php @@ -35,4 +35,50 @@ $is_IE = ( $is_macIE || $is_winIE ); $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 diff --git a/wp-includes/wp-db.php b/wp-includes/wp-db.php index 55a71ce3b8..b558384208 100644 --- a/wp-includes/wp-db.php +++ b/wp-includes/wp-db.php @@ -369,7 +369,8 @@ class wpdb { 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)