in source/core_http_client.c [1420:1482]
static HTTPStatus_t addRangeHeader( HTTPRequestHeaders_t * pRequestHeaders,
int32_t rangeStartOrlastNbytes,
int32_t rangeEnd )
{
HTTPStatus_t returnStatus = HTTPSuccess;
char rangeValueBuffer[ HTTP_MAX_RANGE_REQUEST_VALUE_LEN ];
size_t rangeValueLength = 0U;
assert( pRequestHeaders != NULL );
/* This buffer uses a char type instead of the general purpose uint8_t
* because the range value expected to be written is within the ASCII
* character set. */
( void ) memset( rangeValueBuffer, 0, HTTP_MAX_RANGE_REQUEST_VALUE_LEN );
/* Generate the value data for the Range Request header.*/
/* Write the range value prefix in the buffer. */
( void ) strncpy( rangeValueBuffer,
HTTP_RANGE_REQUEST_HEADER_VALUE_PREFIX,
HTTP_RANGE_REQUEST_HEADER_VALUE_PREFIX_LEN );
rangeValueLength += HTTP_RANGE_REQUEST_HEADER_VALUE_PREFIX_LEN;
/* Write the range start value in the buffer. */
rangeValueLength += convertInt32ToAscii( rangeStartOrlastNbytes,
rangeValueBuffer + rangeValueLength,
sizeof( rangeValueBuffer ) - rangeValueLength );
/* Add remaining value data depending on the range specification type. */
/* Add rangeEnd value if request is for [rangeStart, rangeEnd] byte range */
if( rangeEnd != HTTP_RANGE_REQUEST_END_OF_FILE )
{
/* Write the "-" character to the buffer.*/
*( rangeValueBuffer + rangeValueLength ) = DASH_CHARACTER;
rangeValueLength += DASH_CHARACTER_LEN;
/* Write the rangeEnd value of the request range to the buffer. */
rangeValueLength += convertInt32ToAscii( rangeEnd,
rangeValueBuffer + rangeValueLength,
sizeof( rangeValueBuffer ) - rangeValueLength );
}
/* Case when request is for bytes in the range [rangeStart, EoF). */
else if( rangeStartOrlastNbytes >= 0 )
{
/* Write the "-" character to the buffer.*/
*( rangeValueBuffer + rangeValueLength ) = DASH_CHARACTER;
rangeValueLength += DASH_CHARACTER_LEN;
}
else
{
/* Empty else MISRA 15.7 */
}
/* Add the Range Request header field and value to the buffer. */
returnStatus = addHeader( pRequestHeaders,
HTTP_RANGE_REQUEST_HEADER_FIELD,
HTTP_RANGE_REQUEST_HEADER_FIELD_LEN,
rangeValueBuffer,
rangeValueLength );
return returnStatus;
}