in source/core_http_client.c [1714:1775]
HTTPStatus_t HTTPClient_AddRangeHeader( HTTPRequestHeaders_t * pRequestHeaders,
int32_t rangeStartOrlastNbytes,
int32_t rangeEnd )
{
HTTPStatus_t returnStatus = HTTPSuccess;
if( pRequestHeaders == NULL )
{
LogError( ( "Parameter check failed: pRequestHeaders is NULL." ) );
returnStatus = HTTPInvalidParameter;
}
else if( pRequestHeaders->pBuffer == NULL )
{
LogError( ( "Parameter check failed: pRequestHeaders->pBuffer is NULL." ) );
returnStatus = HTTPInvalidParameter;
}
else if( pRequestHeaders->headersLen > pRequestHeaders->bufferLen )
{
LogError( ( "Parameter check failed: pRequestHeaders->headersLen > pRequestHeaders->bufferLen." ) );
returnStatus = HTTPInvalidParameter;
}
else if( rangeEnd < HTTP_RANGE_REQUEST_END_OF_FILE )
{
LogError( ( "Parameter check failed: rangeEnd is invalid: "
"rangeEnd should be >=-1: RangeEnd=%ld", ( long int ) rangeEnd ) );
returnStatus = HTTPInvalidParameter;
}
else if( ( rangeStartOrlastNbytes < 0 ) &&
( rangeEnd != HTTP_RANGE_REQUEST_END_OF_FILE ) )
{
LogError( ( "Parameter check failed: Invalid range values: "
"rangeEnd should be -1 when rangeStart < 0: "
"RangeStart=%ld, RangeEnd=%ld",
( long int ) rangeStartOrlastNbytes, ( long int ) rangeEnd ) );
returnStatus = HTTPInvalidParameter;
}
else if( ( rangeEnd != HTTP_RANGE_REQUEST_END_OF_FILE ) &&
( rangeStartOrlastNbytes > rangeEnd ) )
{
LogError( ( "Parameter check failed: Invalid range values: "
"rangeStart should be < rangeEnd when both are >= 0: "
"RangeStart=%ld, RangeEnd=%ld",
( long int ) rangeStartOrlastNbytes, ( long int ) rangeEnd ) );
returnStatus = HTTPInvalidParameter;
}
else if( rangeStartOrlastNbytes == INT32_MIN )
{
LogError( ( "Parameter check failed: Arithmetic overflow detected: "
"rangeStart should be > -2147483648 (INT32_MIN): "
"RangeStart=%ld",
( long int ) rangeStartOrlastNbytes ) );
returnStatus = HTTPInvalidParameter;
}
else
{
returnStatus = addRangeHeader( pRequestHeaders,
rangeStartOrlastNbytes,
rangeEnd );
}
return returnStatus;
}