Version 4.1.19
This commit is contained in:
1 parent
28bd025b35
commit
2bd5025018
2674 files changed
+233518
-77766
No files matched your search
+22
-2
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief HTTP Ranges Request/Response Class
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 19 May 2014
|
||||
* @version SVN_VERSION_NUMBER
|
||||
* @note This class facilitates parsing of HTTP Range requests and sending the appropriate response
|
||||
@@ -53,9 +53,13 @@ class _Ranges extends Response
|
||||
$range = 0;
|
||||
$start_range = 0;
|
||||
|
||||
\IPS\Log::debug( "Range response initiated", 'ranges' );
|
||||
|
||||
/* Was this a ranged request? */
|
||||
if( isset( $_SERVER['HTTP_RANGE'] ) )
|
||||
{
|
||||
\IPS\Log::debug( "This is a range request: " . $_SERVER['HTTP_RANGE'], 'ranges' );
|
||||
|
||||
/* Get the range */
|
||||
list( $a, $range ) = explode( "=", $_SERVER['HTTP_RANGE'] );
|
||||
|
||||
@@ -65,6 +69,8 @@ class _Ranges extends Response
|
||||
/* Did we only find one range? */
|
||||
if( count($ranges) == 1 )
|
||||
{
|
||||
\IPS\Log::debug( "Only one range detected", 'ranges' );
|
||||
|
||||
/* Get the actual range start and end */
|
||||
list( $start_range, $end_range ) = explode( "-", $range );
|
||||
|
||||
@@ -90,6 +96,8 @@ class _Ranges extends Response
|
||||
/* If the range is invalid we need to send a 416 header and let the client know the valid range */
|
||||
if( $start_range > $size OR $end_range > $size )
|
||||
{
|
||||
\IPS\Log::debug( "Invalid range, responding with 416 header. Requested {$start_range} - {$end_range} out of {$size}", 'ranges' );
|
||||
|
||||
\IPS\Output::i()->sendStatusCodeHeader( 416 );
|
||||
\IPS\Output::i()->sendHeader( "Content-Range: */{$filesize}" );
|
||||
return;
|
||||
@@ -97,6 +105,8 @@ class _Ranges extends Response
|
||||
/* Otherwise send the 206 header */
|
||||
else
|
||||
{
|
||||
\IPS\Log::debug( "Sending requested range with 206 header: {$start_range} - {$size} out of {$filesize}", 'ranges' );
|
||||
|
||||
\IPS\Output::i()->sendStatusCodeHeader( 206 );
|
||||
\IPS\Output::i()->sendHeader( "Content-Range: bytes {$start_range}-{$size}/{$filesize}" );
|
||||
}
|
||||
@@ -115,6 +125,8 @@ class _Ranges extends Response
|
||||
|
||||
foreach( $ranges as $arange )
|
||||
{
|
||||
\IPS\Log::debug( "Multiple ranges: {$start_range} - {$end_range}", 'ranges' );
|
||||
|
||||
/* Get the actual range start and end */
|
||||
list( $start_range, $end_range ) = explode( "-", $arange );
|
||||
|
||||
@@ -140,6 +152,8 @@ class _Ranges extends Response
|
||||
/* If the range is invalid we need to send a 416 header and let the client know the valid range */
|
||||
if( $start_range > $size OR $end_range > $size )
|
||||
{
|
||||
\IPS\Log::debug( "This range out of multiple ranges was invalid", 'ranges' );
|
||||
|
||||
\IPS\Output::i()->sendStatusCodeHeader( 416 );
|
||||
\IPS\Output::i()->sendHeader( "Content-Range: */{$filesize}" );
|
||||
return;
|
||||
@@ -160,6 +174,8 @@ class _Ranges extends Response
|
||||
|
||||
$the_responses = array();
|
||||
|
||||
\IPS\Log::debug( "One range out of multiple ranges to respond: {$start_range} - {$size} out of {$filesize}", 'ranges' );
|
||||
|
||||
\IPS\Output::i()->sendStatusCodeHeader( 206 );
|
||||
\IPS\Output::i()->sendHeader( "Content-Range: bytes {$start_range}-{$size}/{$filesize}" );
|
||||
|
||||
@@ -174,6 +190,8 @@ class _Ranges extends Response
|
||||
{
|
||||
$content_length = 0;
|
||||
|
||||
\IPS\Log::debug( "Multiple range responses, using boundary", 'ranges' );
|
||||
|
||||
foreach( $the_responses as $part )
|
||||
{
|
||||
$content_length += \strlen( "\r\n--IPDOWNLOADSBOUNDARYMARKER\r\n" );
|
||||
@@ -197,6 +215,8 @@ class _Ranges extends Response
|
||||
/* No range */
|
||||
else
|
||||
{
|
||||
\IPS\Log::debug( "No range requested, sending entire file", 'ranges' );
|
||||
|
||||
$size = $filesize - 1;
|
||||
|
||||
\IPS\Output::i()->sendStatusCodeHeader( 200 );
|
||||
|
||||
Reference in new issue
Block a user