mirror of https://github.com/aria2/aria2
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.
pull/60/head
parent
16a2780bfb
commit
d88e815033
|
@ -199,7 +199,8 @@ std::string HttpRequest::createRequest()
|
||||||
builtinHds.push_back(std::make_pair("Connection:", "close"));
|
builtinHds.push_back(std::make_pair("Connection:", "close"));
|
||||||
}
|
}
|
||||||
if(segment_ && segment_->getLength() > 0 &&
|
if(segment_ && segment_->getLength() > 0 &&
|
||||||
(request_->isPipeliningEnabled() || getStartByte() > 0)) {
|
(request_->isPipeliningEnabled() || getStartByte() > 0 ||
|
||||||
|
getEndByte() > 0)) {
|
||||||
std::string rangeHeader(fmt("bytes=%" PRId64 "-", getStartByte()));
|
std::string rangeHeader(fmt("bytes=%" PRId64 "-", getStartByte()));
|
||||||
if(request_->isPipeliningEnabled()) {
|
if(request_->isPipeliningEnabled()) {
|
||||||
rangeHeader += util::itos(getEndByte());
|
rangeHeader += util::itos(getEndByte());
|
||||||
|
|
Loading…
Reference in New Issue