Skip to content

http_makerequest 中https下载起始位置错误 #419

@634742472

Description

@634742472
  • Describe the bug
    https下载文件中,协议中,Range:设置范围是不是应该从0开始,而不是从1开始,该文件是:ota_https.c,版本号是:
    SHA-1:1d90ab9bb4cdcb654d16fbdd5f039c13a9f6c48e

  • To Reproduce
    Steps to reproduce the behavior:

    • step 1 http_makerequest函数原型实现如下,是设置了range从1开始,导致云端会从ota文件的第二字节开始返回,而不是实际的第一字节:
      static int http_makerequest(http_section_t *section)
      {
      int ret;
      ret = snprintf((char *)section->cache,CONFIG_HTTPS_DOWNLOADING_BLKLEN,CN_OTA_HTTPS_REQ_FMT,section->url_re,
      section->bearer,section->host,section->port,section->offset + 1, section->offset + section->len); ///< start from 1
      return ret;
      }
      这样的话云端返回数据第一字节就已经不匹配了
  • Expected behavior
    正常应该是从ota文件第一字节开始传输,而不是从第二字节传输,http文件下载协议是range字段设置是从0开始的,不是从1开始

  • Current behavior
    当前表现,云端会直接从发ota文件第二字节数据,最后数据少发送1字节,并且超时(因为实际接收字节数与期望接收字节数不一致)

  • Please tell us about your environment:

    • LiteOS Version: iot_link
    • Chip Architecture:ARM
    • Board: NO
    • SHA-1:1d90ab9bb4cdcb654d16fbdd5f039c13a9f6c48e
  • Other information (当前经过修改后代码如下,设置range从0开始后,云端返回数据就正常,但没有对section->len进行判断(如果为0,那该range字段应该是错误的):)

static int http_makerequest(http_section_t *section)
{
      int ret;
      ret = snprintf((char *)section->cache,CONFIG_HTTPS_DOWNLOADING_BLKLEN,CN_OTA_HTTPS_REQ_FMT,section->url_re,\
              section->bearer,section->host,section->port,section->offset , section->offset + section->len -1); ///< start from 1
      return ret;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions