diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-06-23 15:35:45 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-06-23 15:35:45 +0000 |
| commit | 90471d68050ebd05439435330e4d0dbb19c6fd1e (patch) | |
| tree | 7324c9a0e4d57328c15d32cb1efaa2a91ad774a9 /src/HttpRequestCommand.cc | |
| parent | 6b2ab3ffc0d96d66723fa8b43552fd09d2108781 (diff) | |
2009-06-24 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added experimental support of WEB-Seeding for multi-file torrent.
Due to fundamental changes in file handling in HTTP/FTP code, many
functions are not working: PeerStat, ServerHost, proxy..etc
* src/AbstractCommand.cc
* src/AbstractCommand.h
* src/BitfieldMan.cc
* src/BitfieldMan.h
* src/CreateRequestCommand.cc
* src/CreateRequestCommand.h
* src/DefaultPieceStorage.cc
* src/DefaultPieceStorage.h
* src/DownloadCommand.cc
* src/DownloadCommand.h
* src/DownloadContext.cc
* src/DownloadContext.h
* src/FileEntry.cc
* src/FileEntry.h
* src/FtpDownloadCommand.cc
* src/FtpDownloadCommand.h
* src/FtpFinishDownloadCommand.cc
* src/FtpFinishDownloadCommand.h
* src/FtpInitiateConnectionCommand.cc
* src/FtpInitiateConnectionCommand.h
* src/FtpNegotiationCommand.cc
* src/FtpNegotiationCommand.h
* src/FtpTunnelResponseCommand.cc
* src/HttpDownloadCommand.cc
* src/HttpDownloadCommand.h
* src/HttpInitiateConnectionCommand.cc
* src/HttpInitiateConnectionCommand.h
* src/HttpProxyResponseCommand.cc
* src/HttpRequest.cc
* src/HttpRequest.h
* src/HttpRequestCommand.cc
* src/HttpRequestCommand.h
* src/HttpResponseCommand.cc
* src/HttpResponseCommand.h
* src/HttpSkipResponseCommand.cc
* src/HttpSkipResponseCommand.h
* src/InitiateConnectionCommand.cc
* src/InitiateConnectionCommand.h
* src/InitiateConnectionCommandFactory.cc
* src/InitiateConnectionCommandFactory.h
* src/Makefile.am
* src/PieceStorage.h
* src/RequestGroup.cc
* src/RequestGroup.h
* src/RequestGroupMan.cc
* src/SegmentMan.cc
* src/SegmentMan.h
* src/SingleFileDownloadContext.h
* src/StreamFileAllocationEntry.cc
* src/TrackerWatcherCommand.cc
* src/UnknownLengthPieceStorage.cc
* src/UnknownLengthPieceStorage.h
* src/array_fun.h
* src/bitfield.h
* src/download_helper.cc
* test/DownloadContextTest.cc
* test/Makefile.am
* test/MockDownloadContext.h
Diffstat (limited to 'src/HttpRequestCommand.cc')
| -rw-r--r-- | src/HttpRequestCommand.cc | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/HttpRequestCommand.cc b/src/HttpRequestCommand.cc index 7acd3fdf..d95e616b 100644 --- a/src/HttpRequestCommand.cc +++ b/src/HttpRequestCommand.cc @@ -58,11 +58,12 @@ namespace aria2 { HttpRequestCommand::HttpRequestCommand (int cuid, const RequestHandle& req, + const SharedHandle<FileEntry>& fileEntry, RequestGroup* requestGroup, const HttpConnectionHandle& httpConnection, DownloadEngine* e, const SocketHandle& s) - :AbstractCommand(cuid, req, requestGroup, e, s), + :AbstractCommand(cuid, req, fileEntry, requestGroup, e, s), _httpConnection(httpConnection) { setTimeout(getOption()->getAsInt(PREF_CONNECT_TIMEOUT)); @@ -74,6 +75,7 @@ HttpRequestCommand::~HttpRequestCommand() {} static SharedHandle<HttpRequest> createHttpRequest(const SharedHandle<Request>& req, + const SharedHandle<FileEntry>& fileEntry, const SharedHandle<Segment>& segment, uint64_t totalLength, const SharedHandle<Option>& option, @@ -85,8 +87,9 @@ createHttpRequest(const SharedHandle<Request>& req, HttpRequestHandle httpRequest(new HttpRequest()); httpRequest->setUserAgent(option->get(PREF_USER_AGENT)); httpRequest->setRequest(req); + httpRequest->setFileEntry(fileEntry); httpRequest->setSegment(segment); - httpRequest->setEntityLength(totalLength); + httpRequest->setEntityLength(fileEntry->getLength()); httpRequest->addHeader(option->get(PREF_HEADER)); httpRequest->setCookieStorage(cookieStorage); httpRequest->setAuthConfigFactory(authConfigFactory); @@ -113,7 +116,9 @@ bool HttpRequestCommand::executeInternal() { if(_segments.empty()) { HttpRequestHandle httpRequest - (createHttpRequest(req, SharedHandle<Segment>(), + (createHttpRequest(req, + _fileEntry, + SharedHandle<Segment>(), _requestGroup->getTotalLength(), getOption(), _requestGroup, @@ -126,7 +131,9 @@ bool HttpRequestCommand::executeInternal() { const SegmentHandle& segment = *itr; if(!_httpConnection->isIssued(segment)) { HttpRequestHandle httpRequest - (createHttpRequest(req, segment, + (createHttpRequest(req, + _fileEntry, + segment, _requestGroup->getTotalLength(), getOption(), _requestGroup, @@ -141,7 +148,8 @@ bool HttpRequestCommand::executeInternal() { _httpConnection->sendPendingData(); } if(_httpConnection->sendBufferIsEmpty()) { - Command* command = new HttpResponseCommand(cuid, req, _requestGroup, + Command* command = new HttpResponseCommand(cuid, req, _fileEntry, + _requestGroup, _httpConnection, e, socket); e->commands.push_back(command); return true; |
