From eeb382e3c7addd13ee70a58542412628e884f8ec Mon Sep 17 00:00:00 2001 From: Bryan Davis Date: Sat, 1 Oct 2016 18:02:12 -0600 Subject: [PATCH] MWException: restore prior render() logic Partially revert 00bee02 by restoring the prior MWException::report() logic. MWExceptionRenderer does not handle all of the MWException subclasses that somehow modify the default render() behavior. Notable among these is Flow\Exception\FlowException and its subclasses which modify the `$wgOut` global to divert HTML output to alternate locations. Bug: T147122 Change-Id: Ibe3cadca229ce21ed0a3a2482433e3a22b5f5646 --- includes/exception/MWException.php | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/includes/exception/MWException.php b/includes/exception/MWException.php index 5496cb63d0..e958c9449f 100644 --- a/includes/exception/MWException.php +++ b/includes/exception/MWException.php @@ -199,7 +199,26 @@ class MWException extends Exception { * It will be either HTML or plain text based on isCommandLine(). */ public function report() { - MWExceptionRenderer::output( $this, MWExceptionRenderer::AS_PRETTY ); + global $wgMimeType; + + if ( defined( 'MW_API' ) ) { + // Unhandled API exception, we can't be sure that format printer is alive + self::header( 'MediaWiki-API-Error: internal_api_error_' . get_class( $this ) ); + wfHttpError( 500, 'Internal Server Error', $this->getText() ); + } elseif ( self::isCommandLine() ) { + $message = $this->getText(); + // T17602: STDERR may not be available + if ( defined( 'STDERR' ) ) { + fwrite( STDERR, $message ); + } else { + echo $message; + } + } else { + self::statusHeader( 500 ); + self::header( "Content-Type: $wgMimeType; charset=utf-8" ); + + $this->reportHTML(); + } } /** -- 2.20.1