[ticket/11212] Do not rely on $request in send_status_line()

PHPBB3-11212
This commit is contained in:
Igor Wiedler 2012-11-17 01:15:50 +01:00
parent 65dde648ca
commit 5fad4006e1

View file

@ -2858,8 +2858,6 @@ function meta_refresh($time, $url, $disable_cd_check = false)
*/ */
function send_status_line($code, $message) function send_status_line($code, $message)
{ {
global $request;
if (substr(strtolower(@php_sapi_name()), 0, 3) === 'cgi') if (substr(strtolower(@php_sapi_name()), 0, 3) === 'cgi')
{ {
// in theory, we shouldn't need that due to php doing it. Reality offers a differing opinion, though // in theory, we shouldn't need that due to php doing it. Reality offers a differing opinion, though
@ -2867,18 +2865,35 @@ function send_status_line($code, $message)
} }
else else
{ {
if ($request->server('SERVER_PROTOCOL')) $version = get_http_version();
{
$version = $request->server('SERVER_PROTOCOL');
}
else
{
$version = 'HTTP/1.0';
}
header("$version $code $message", true, $code); header("$version $code $message", true, $code);
} }
} }
/**
* Returns the HTTP version used in the current request.
*
* Handles the case of being called before `$request` is present,
* In which case it falls back to the $_SERVER superglobal.
*
* @return string HTTP version
*/
function get_http_version()
{
global $request;
if ($request && $request->server('SERVER_PROTOCOL'))
{
return $request->server('SERVER_PROTOCOL');
}
else if (isset($_SERVER['SERVER_PROTOCOL']))
{
return $_SERVER['SERVER_PROTOCOL'];
}
return 'HTTP/1.0';
}
//Form validation //Form validation