From b782a56b1c178795fda4ca7ed2ee4d9621927aab Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sat, 23 Feb 2013 15:37:35 +0900 Subject: Show correct end byte in error message when HTTP response range is not ok Previously, unless HTTP pipelining is enabled, end byte in that message is always 0. With this change, it shows correct end byte sent to the HTTP server. --- src/HttpRequest.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/HttpRequest.cc') diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc index ee286194..3bb5df1f 100644 --- a/src/HttpRequest.cc +++ b/src/HttpRequest.cc @@ -96,6 +96,8 @@ int64_t HttpRequest::getEndByte() const int64_t endByte = fileEntry_->gtoloff(segment_->getPosition()+segment_->getLength()-1); return std::min(endByte, fileEntry_->getLength()-1); + } else if(endOffsetOverride_ > 0) { + return endOffsetOverride_ - 1; } else { return 0; } @@ -201,9 +203,9 @@ std::string HttpRequest::createRequest() std::string rangeHeader(fmt("bytes=%" PRId64 "-", getStartByte())); if(request_->isPipeliningEnabled()) { rangeHeader += util::itos(getEndByte()); - } else if(getProtocol() != "ftp" && endOffsetOverride_ > 0) { + } else if(getEndByte() > 0) { // FTP via http proxy does not support endbytes - rangeHeader += util::itos(endOffsetOverride_-1); + rangeHeader += util::itos(getEndByte()); } builtinHds.push_back(std::make_pair("Range:", rangeHeader)); } -- cgit