summaryrefslogtreecommitdiff
path: root/src/HttpResponseCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-05-07 03:49:27 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-05-07 03:49:27 +0000
commit030bc082872b640765fd092e5cee4920c208a5fd (patch)
tree8114aa66550b9fa4579e8e0dfbb4cebc69fd9ba4 /src/HttpResponseCommand.cc
parent4432b68d24e362618a8b28b73467466e262a1809 (diff)
2009-05-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Fixed broken file renaming feature since r1202. * src/FtpNegotiationCommand.cc * src/FtpNegotiationCommand.h * src/HttpResponseCommand.cc * src/RequestGroup.cc * src/RequestGroup.h
Diffstat (limited to 'src/HttpResponseCommand.cc')
-rw-r--r--src/HttpResponseCommand.cc24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/HttpResponseCommand.cc b/src/HttpResponseCommand.cc
index 487593e8..d33399a3 100644
--- a/src/HttpResponseCommand.cc
+++ b/src/HttpResponseCommand.cc
@@ -216,6 +216,11 @@ bool HttpResponseCommand::shouldInflateContentEncoding
bool HttpResponseCommand::handleDefaultEncoding(const HttpResponseHandle& httpResponse)
{
HttpRequestHandle httpRequest = httpResponse->getHttpRequest();
+ _requestGroup->adjustFilename
+ (SharedHandle<BtProgressInfoFile>(new DefaultBtProgressInfoFile
+ (_requestGroup->getDownloadContext(),
+ SharedHandle<PieceStorage>(),
+ e->option)));
_requestGroup->initPieceStorage();
if(e->option->getAsBool(PREF_DRY_RUN)) {
@@ -225,6 +230,12 @@ bool HttpResponseCommand::handleDefaultEncoding(const HttpResponseHandle& httpRe
BtProgressInfoFileHandle infoFile(new DefaultBtProgressInfoFile(_requestGroup->getDownloadContext(), _requestGroup->getPieceStorage(), e->option));
if(!infoFile->exists() && _requestGroup->downloadFinishedByFileLength()) {
+ _requestGroup->getPieceStorage()->markAllPiecesDone();
+
+ logger->notice(MSG_DOWNLOAD_ALREADY_COMPLETED,
+ _requestGroup->getGID(),
+ _requestGroup->getFilePath().c_str());
+
return true;
}
@@ -308,16 +319,23 @@ bool HttpResponseCommand::handleOtherEncoding(const HttpResponseHandle& httpResp
req->setMethod(Request::METHOD_GET);
return prepareForRetry(0);
}
- _requestGroup->initPieceStorage();
// For zero-length file, check existing file comparing its size
- if(_requestGroup->getDownloadContext()->knowsTotalLength() &&
- _requestGroup->downloadFinishedByFileLength()) {
+ if(_requestGroup->downloadFinishedByFileLength()) {
+ _requestGroup->initPieceStorage();
+ _requestGroup->getPieceStorage()->markAllPiecesDone();
+
+ logger->notice(MSG_DOWNLOAD_ALREADY_COMPLETED,
+ _requestGroup->getGID(),
+ _requestGroup->getFilePath().c_str());
+
poolConnection();
return true;
}
_requestGroup->shouldCancelDownloadForSafety();
+ _requestGroup->initPieceStorage();
+
_requestGroup->getPieceStorage()->getDiskAdaptor()->initAndOpenFile();
// In this context, knowsTotalLength() is true only when the file is