Browse Source

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 years ago
parent
commit
d88e815033
1 changed files with 2 additions and 1 deletions
  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());