浏览代码

Fix bug that invalid range error when requesting range starting 0

Since the change b782a56b, we use endOffsetOverride_ as the return
value of getEndByte(). But aria2 does not send Range header field when
range starts 0 (this is because some server returns error if it
received Range: 0-), and the HttpRequest::isRangeSatisfied() checks
the equality of getEndByte() and the end byte in response header and
fails. The fix is send Range header if getEndByte() is set.
Tatsuhiro Tsujikawa 12 年之前
父节点
当前提交
d88e815033
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      src/HttpRequest.cc

+ 2 - 1
src/HttpRequest.cc

@@ -199,7 +199,8 @@ std::string HttpRequest::createRequest()
     builtinHds.push_back(std::make_pair("Connection:", "close"));
   }
   if(segment_ && segment_->getLength() > 0 &&
-     (request_->isPipeliningEnabled() || getStartByte() > 0)) {
+     (request_->isPipeliningEnabled() || getStartByte() > 0 ||
+      getEndByte() > 0)) {
     std::string rangeHeader(fmt("bytes=%" PRId64 "-", getStartByte()));
     if(request_->isPipeliningEnabled()) {
       rangeHeader += util::itos(getEndByte());