Pārlūkot izejas kodu

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 gadi atpakaļ
vecāks
revīzija
d88e815033
1 mainītis faili ar 2 papildinājumiem un 1 dzēšanām
  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());