namespace MediaWiki;
+/**
+ * @since 1.29
+ */
class HeaderCallback {
private static $headersSentException;
private static $messageSent = false;
* Register a callback to be called when headers are sent. There can only
* be one of these handlers active, so all relevant actions have to be in
* here.
+ *
+ * @since 1.29
*/
public static function register() {
header_register_callback( [ __CLASS__, 'callback' ] );
/**
* The callback, which is called by the transport
+ *
+ * @since 1.29
*/
public static function callback() {
// Prevent caching of responses with cookies (T127993)
$headers = [];
foreach ( headers_list() as $header ) {
- list( $name, $value ) = explode( ':', $header, 2 );
- $headers[strtolower( trim( $name ) )][] = trim( $value );
+ $header = explode( ':', $header, 2 );
+
+ // Note: The code below (currently) does not care about value-less headers
+ if ( isset( $header[1] ) ) {
+ $headers[ strtolower( trim( $header[0] ) ) ][] = trim( $header[1] );
+ }
}
if ( isset( $headers['set-cookie'] ) ) {
/**
* Log a warning message if headers have already been sent. This can be
* called before flushing the output.
+ *
+ * @since 1.29
*/
public static function warnIfHeadersSent() {
if ( headers_sent() && !self::$messageSent ) {