2010-07-17 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

Check status values: 200 and 206.
	* src/HttpResponse.cc
pull/1/head
Tatsuhiro Tsujikawa 2010-07-16 16:21:45 +00:00
parent 332a5bd4a1
commit 036abeee11
2 changed files with 31 additions and 19 deletions

View File

@ -1,3 +1,8 @@
2010-07-17 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Check status values: 200 and 206.
* src/HttpResponse.cc
2010-07-16 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net> 2010-07-16 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Reverted previous change and fixed it in a right way. Reverted previous change and fixed it in a right way.

View File

@ -69,11 +69,11 @@ void HttpResponse::validateResponse() const
if(status >= HttpHeader::S400) { if(status >= HttpHeader::S400) {
return; return;
} }
if(status == HttpHeader::S304 && if(status == HttpHeader::S304) {
httpRequest_->getIfModifiedSinceHeader().empty()) { if(httpRequest_->getIfModifiedSinceHeader().empty()) {
throw DL_ABORT_EX("Got 304 without If-Modified-Since"); throw DL_ABORT_EX("Got 304 without If-Modified-Since");
} }
if(status == HttpHeader::S301 || } else if(status == HttpHeader::S301 ||
status == HttpHeader::S302 || status == HttpHeader::S302 ||
status == HttpHeader::S303 || status == HttpHeader::S303 ||
status == HttpHeader::S307) { status == HttpHeader::S307) {
@ -82,21 +82,28 @@ void HttpResponse::validateResponse() const
(StringFormat(EX_LOCATION_HEADER_REQUIRED, (StringFormat(EX_LOCATION_HEADER_REQUIRED,
util::parseUInt(status)).str()); util::parseUInt(status)).str());
} }
} else if(!httpHeader_->defined(HttpHeader::TRANSFER_ENCODING)) { return;
// compare the received range against the requested range } else if(status == HttpHeader::S200 ||
RangeHandle responseRange = httpHeader_->getRange(); status == HttpHeader::S206) {
if(!httpRequest_->isRangeSatisfied(responseRange)) { if(!httpHeader_->defined(HttpHeader::TRANSFER_ENCODING)) {
throw DL_ABORT_EX2 // compare the received range against the requested range
(StringFormat RangeHandle responseRange = httpHeader_->getRange();
(EX_INVALID_RANGE_HEADER, if(!httpRequest_->isRangeSatisfied(responseRange)) {
util::itos(httpRequest_->getStartByte(), true).c_str(), throw DL_ABORT_EX2
util::itos(httpRequest_->getEndByte(), true).c_str(), (StringFormat
util::uitos(httpRequest_->getEntityLength(), true).c_str(), (EX_INVALID_RANGE_HEADER,
util::itos(responseRange->getStartByte(), true).c_str(), util::itos(httpRequest_->getStartByte(), true).c_str(),
util::itos(responseRange->getEndByte(), true).c_str(), util::itos(httpRequest_->getEndByte(), true).c_str(),
util::uitos(responseRange->getEntityLength(), true).c_str()).str(), util::uitos(httpRequest_->getEntityLength(), true).c_str(),
downloadresultcode::CANNOT_RESUME); util::itos(responseRange->getStartByte(), true).c_str(),
util::itos(responseRange->getEndByte(), true).c_str(),
util::uitos(responseRange->getEntityLength(), true).c_str()).str(),
downloadresultcode::CANNOT_RESUME);
}
} }
} else {
throw DL_ABORT_EX
(StringFormat("Unexpected status %s", status.c_str()).str());
} }
} }