Skip to content

Commit 3280d5b

Browse files
fix: send 500 response code on critical errors
1 parent 6045c24 commit 3280d5b

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

src/wp-includes/functions.php

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3886,6 +3886,23 @@ function _default_wp_die_handler( $message, $title = '', $args = array() ) {
38863886
$message .= "\n<p><a href='javascript:history.back()'>$back_text</a></p>";
38873887
}
38883888

3889+
// Ensure HTTP 500 status code for critical errors, even if headers were already sent.
3890+
$is_critical_error = false;
3891+
if ( function_exists( 'is_wp_error' ) && is_wp_error( $message ) ) {
3892+
$error_code = $message->get_error_code();
3893+
$is_critical_error = ( 'internal_server_error' === $error_code );
3894+
} elseif ( 'internal_server_error' === $parsed_args['code'] ) {
3895+
$is_critical_error = true;
3896+
}
3897+
3898+
// Also ensure HTTP 500 if response is already set to 500 (from fatal error handler).
3899+
if ( $is_critical_error || 500 === $parsed_args['response'] ) {
3900+
$parsed_args['response'] = 500;
3901+
if ( function_exists( 'http_response_code' ) ) {
3902+
http_response_code( 500 );
3903+
}
3904+
}
3905+
38893906
if ( ! did_action( 'admin_head' ) ) :
38903907
if ( ! headers_sent() ) {
38913908
header( "Content-Type: text/html; charset={$parsed_args['charset']}" );
@@ -4224,12 +4241,12 @@ function _xml_wp_die_handler( $message, $title = '', $args = array() ) {
42244241

42254242
$xml = <<<EOD
42264243
<error>
4227-
<code>{$parsed_args['code']}</code>
4228-
<title><![CDATA[{$title}]]></title>
4229-
<message><![CDATA[{$message}]]></message>
4230-
<data>
4231-
<status>{$parsed_args['response']}</status>
4232-
</data>
4244+
<code>{$parsed_args['code']}</code>
4245+
<title><![CDATA[{$title}]]></title>
4246+
<message><![CDATA[{$message}]]></message>
4247+
<data>
4248+
<status>{$parsed_args['response']}</status>
4249+
</data>
42334250
</error>
42344251
42354252
EOD;

0 commit comments

Comments
 (0)