summaryrefslogtreecommitdiff
path: root/src/UrlRequestInfo.h
Commit message (Collapse)AuthorAgeFilesLines
* 2007-11-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-11-121-117/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implemented checksum validation feature(1 checksum for each file) The validation takes place after the download. * src/PieceHashCheckIntegrityEntry.{h, cc}: New class. * src/IteratableChecksumValidator.{h, cc}: Rewritten. * src/CheckIntegrityCommand.cc: Changed log message. * src/Metalink2RequestGroup.cc: Set checksum to SingleFileDownloadContext. * src/StreamCheckIntegrityEntry.{h, cc}: Now derived from PieceHashCheckIntegrity class. * src/BtCheckIntegrityEntry.{h, cc}: Now derived from PieceHashCheckIntegrity class. * src/ChecksumCheckIntegrityEntry.{h, cc}: New class. * src/IteratableValidator.h: New class. * src/message.h * src/CheckIntegrityEntry.{h, cc} * src/IteratableChunkChecksumValidator.{h, cc} * src/SingleFileDownloadContext.h * src/DownloadCommand.cc --allow-overwrite=true is no longer needed to check file integrity before download in BitTorrent download. * src/RequestGroup.cc (getInitialCommand) Removed RequestGroup from queue when RequestGroup::getInitialCommand() throws exception. * src/RequestGroupMan.cc (getInitialCommands)
* 2007-07-21 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-07-211-3/+3
| | | | | | | Converted int's to in32_t. long long int's are also converted to int64_t
* 2007-03-25 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-03-251-1/+14
| | | | | | | | | | | | | | | | | Use filename and size from Metalink file instead of sending HEAD request: * src/UrlRequestInfo.h (_filename): New variable. (_totalLength): New variable. (setTotalLength): New variable. (setFilename): New variable. * src/MetalinkRequestInfo.cc (execute): Set filename and size to UrlRequestInfo * src/UrlRequestInfo.cc (execute): Use filename and size from Metalink instead of seding HEAD request to servers.
* 2007-03-21 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-03-211-1/+1
| | | | | | | | | | | | | | | * src/Request.h: Use AuthResolver to get authentication information. * src/main.cc: Made RequestFactory a singleton object. Netrc is now set to RequestFactory object. * src/AuthConfigItem.h, src/AuthConfigItem.cc: Removed. * src/AuthConfig.h, src/AuthConfig.cc: Rewritten. * src/TrackerWatcherComand.cc: Use RequestFactorySingletonHolder to create Request object.
* 2007-03-19 Tatsuhiro Tsujikawa <tujikawa at valkyrie dot rednoah com>Tatsuhiro Tsujikawa2007-03-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To integrate Netrc into exsiting classes: * src/Request.h (_userDefinedAuthConfig): New variable. (findNetrcAuthenticator): New function. (segment): Removed. (setUserDefinedAuthConfig): New function. (resolveHttpAuthConfigItem): New function. (resolveFtpAuthConfigItem): New function. (resolveHttpProxyAuthConfigItem): New function. * src/HttpRequest.h (authConfig): Removed. (proxyAuthConfig): Removed. (setAuthConfig): Removed. (setProxyAuthConfig): Removed. * src/UrlRequest.h (getHeadResult): Added a parameter: authConfigHandle * src/common.h (SingletonHolder.h): New include. * src/main.cc (Netrc.h): New include. (main): Removed initial values of PREF_FTP_USER, PREF_FTP_PASSWD. Added initial value of PREF_NETRC_PATH. Added the initialization of netrc. * src/AuthConfig.h: New class. * src/prefs.h (PREF_NETRC_PATH): New definition. * src/HttpAuthConfig.h: Removed. * src/Netrc.cc (getRequiredNextToken): New function. (skipMacdef): New function. (parse): Rewritten. * src/Netrc.h (getRequiredNextToken): New function. (skipMacdef): New function. * src/Util.h, src/Util.cc (getHomeDir): New function. * src/TrackerWatcherComand.cc (createRequestCommand): Use AuthConfig. * src/FtpConnection.cc (sendUser): Use Request::resolveFtpAuthConfigItem(). (sendPass): Use Request::resolveFtpAuthConfigItem(). * src/Request.cc (findNetrcAuthenticator): New function. (resolveHttpAuthConfigItem): New function. (resolveFtpAuthConfigItem): New function. (resolveHttpProxyAuthConfigItem): New function. * src/UrlRequestInfo.cc: Use AuthConfig. * src/HttpRequest.cc (createRequest): Use authConfig. (getProxyAuthString): Use authConfig. (configure): Removed PREF_HTTP_USER, PREF_HTTP_PASSWD, PREF_HTTP_PROXY_USER, PREF_HTTP_PROXY_PASSWD.
* 2007-03-15 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-03-151-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To handle Segment as SegmentHandle: * src/AbstractCommand.cc (execute): Rewritten. * src/SegmentMan.h: Segment -> SegmentHandle Introducded HttpResponse class, HttpRequest class to improve code extensiveness and make it clear: * src/HttpDownloadCommand.cc: transfer encoders are now managed by HttpResponse class. * src/HttpRequest.h, src/HttpRequest.cc: New class. * src/HttpResponse.h, src/HttpResponse.cc: New class. * src/HttpConnection.cc: Contruction of http request were moved to HttpRequest class. * src/HttpResponseCommand.h, src/HttpResponseCommand.cc: Refactored. * src/HttpRequestCommand.cc (executeInternal): Rewritten. * src/HttpAuthConfig.h: New class. * src/Range.h: New class. To make FtpTunnel{Request, Response}Command and HttpProxy{Request, Response}Command derived from AbstractProxy{Request, Response}Command: * src/FtpTunnelResponseCommand.h, src/FtpTunnelResponseCommand.cc: Derived from AbstractProxyRequestCommand class. * src/FtpTunnelRequestCommand.h, src/FtpTunnelRequestCommand.cc: Derived from AbstractProxyResponseCommand class. * src/HttpProxyRequestCommand.h, src/HttpProxyRequestCommand.cc: Derived from AbstractProxyRequestCommand class. * src/HttpProxyResponseCommand.h, src/HttpProxyResponseCommand.cc: Derived from AbstractProxyResponseCommand class. * src/AbstractProxyRequestCommand.h, src/AbstractProxyRequestCommand.cc : New class. * src/AbstractProxyResponseCommand.h, src/AbstractProxyResponseCommand.cc: New class. To add netrc support: * src/Netrc.h, src/Netrc.cc: New class. * src/Util.h, src/Util.cc (split): New function. * src/HttpHeader.cc (getRange): Fixed so that it inspects "Content-Range" header instead of "Range" header. * src/HttpHeader.h (getStatus): Removed. (setStatus): Removed. * src/Segment.h (getPositionToWrite): New function.
* 2007-01-30 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-01-291-14/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To fix segfault in Metalink download: * src/UrlRequestInfo.h (filename): Removed. (totalLength): Removed. (setTotalLength): Removed. (setFilename): Removed. * src/MetalinkRequestInfo.cc (execute): Do not set filename and totalLength to reqInfo. Set chunk checksum to reqInfo if it is not null. * src/HttpResponseCommand.cc (executeInternal): Fixed filename in log. (handleDefaultEncoding): Removed the call to initBitfield() and markAllPiecesDone(). (handleOtherEncoding): Added HEAD method handling. * src/FtpNegotiateCommand.cc (executeInternal): Added SEQ_HEAD_OK handling. (recvSize): In HEAD handling, set sequence to SEQ_HEAD_OK and return false. * src/FtpNegotiateCommand.h (SEQ_HEAD_OK): New definition. * src/SegmentMan.cc (initBitfield): Delete bitfield. (isChunkChecksumValidationReady): Fixed the condition. * src/UrlRequestInfo.cc: Fixed so that Metalink and Torrent download works fine.
* 2007-01-28 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-01-281-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/Xml2MetalinkProcessor.h (xpathExists): New function. * src/Xml2MetalinkProcessor.cc (xpathExists): New function. Not to send HEAD request if filename and size are available in Metalink file: * src/UrlRequestInfo.h (filename): New variable. (totalLength): New variable. (setTotalLength): New function. (setFilename): New function. * src/MetalinkRequestInfo.cc (execute): Set filename and size to UrlRequestInfo. * src/MetalinkEntry.cc (MetalinkEntry): Initialize size with 0. * src/UrlRequestInfo.cc (execute): Set filename and size to SegmentMan. Not to download rest of the files after selected files are downloaded in BitTorrent: * src/PieceStorage.h (allDownloadFinished): New function. * src/DefaultBtAnnounce.cc (isCompleteAnnounceReady): Use allDownloadFinished instead of downloadFinished. (getAnnounceUrl): Use allDownloadFinished instead of downloadFinished. * src/DefaultPieceStorage.cc (completePiece): Use allDownloadFinished instead of downloadFinished. Commented out the call to finishSelectiveDownloadingMode(). (downloadFinished): Call isFilteredAllBitSet() instead of isAllBitSet(). (allDownloadFinished): New function. * src/DefaultBtInteractive.cc (addBitfieldMessageToQueue): Call allDownloadFinished() instead of downloadFinished(). (checkHave): Call allDownloadFinished() instead of downloadFinished(). * src/TorrentDownloadEngine.cc (onEndOfRun): Call allDownloadFinished() instead of downloadFinished(). * src/BitfieldMan.h (isFilteredAllBitSet): New function. * src/ShareRatioSeedCriteria.h (PieceStorage.h): New include. (pieceStorage): New variable. (evaluate): btContext->getTotalLength() -> pieceStorage->getCompletedLength() * src/BitfieldMan.cc (isFilteredAllBitSet): New function. (isAllBitSet): Filter is not took into account. Rename --force-truncate as --allow-overwrite: * src/TorrentRequestInfo.cc (execute): PREF_FORCE_TRUNCATE -> PREF_ALLOW_OVERWRITE * src/main.cc (showUsage): --force-truncate -> --allow-overwrite * src/message.h (EX_FILE_ALREADY_EXISTS): --force-truncate -> --allow-overwrite * src/prefs.h (PREF_FORCE_TRUNCATE): Removed. (PREF_ALLOW_OVERWRITE): New definition. * src/SegmentMan.cc (shouldCancelDownloadForSafety): --force-truncate -> --allow-overwrite * src/MetalinkRequestInfo.cc (execute): Queueing message are now logged in info level. * src/common.h (LONG_LONG_MAX): Removed. (LONG_LONG_MIN): Removed. * src/HttpResponseCommand.cc (handleDefaultEncoding): LONG_LONG_MAX -> INT64_MAX * src/FtpNegotiateCommand.cc (recvSize): LONG_LONG_MAX -> INT64_MAX * src/main.cc (showUsage): Added --check-integiry and --realtime-chunk-checksum command-line option. (main): Added --check-integiry and --realtime-chunk-checksum command-line option. --force-truncate -> --allow-overwrite Set initial value of --check-integrity option to false. Don't show usage when error occurs while persing command-line options. Removed deprecated --upload-limit option.
* 2007-01-26 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-01-251-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/message.h: Added EX_INVALID_PAYLOAD_SIZE and EX_INVALID_BT_MESSAGE_ID. Following source files affected. * src/BtAllowedFastMessage.cc: * src/BtBitfieldMessage.cc * src/BtCancelMessage.cc * src/BtChokeMessage.cc * src/BtHaveAllMessage.cc * src/BtHaveMessage.cc * src/BtHaveNoneMessage.cc * src/BtInterestedMessage.cc * src/BtNotInterestedMessage.cc * src/BtPieceMessage.cc * src/BtPortMessage.cc * src/BtRejectMessage.cc * src/BtRequestMessage.cc * src/BtSuggestPieceMessage.cc * src/BtUnchokeMessage.cc * src/message.h: Added EX_INVALID_CHUNK_CHECKSUM. Following source files are affected. * src/ChunkChecksumValidator.cc * src/SegmentMan.cc
* 2007-01-23 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-01-241-1/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To add chunk checksum validation: * src/MetalinkEntry.h (MetalinkChunkChecksum.h): New include. (chunkChecksum): New variable. * src/Request.h (method): New variable. (setMethod): New function. (getMethod): New function. (METHOD_GET): New static constant. (METHOD_HEAD): New static constant. * src/Xml2MetalinkProcessor.h (getPieceHash): New function. * src/PieceStorage.h (markAllPiecesDone): New function. (checkIntegrity): New function. * src/FileAllocator.h (NullFileAllocationMonitor.h): New include. (FileAllocator): Initialize fileAllocationMonitor with new NullFileAllocationMonitor(). * src/MultiDiskAdaptor.h (messageDigest.h): Remove include. (ctx): Removed. (hashUpdate): Added ctx. (MultiDiskAdaptor): Removed ctx. (sha1Sum): Renamed as messageDigest. (messageDigest): New function. * src/UrlRequestInfo.h (HeadResult): New class. (digestAlgo): New variable. (chunkChecksumLength): New variable. (chunkChecksums): New variable. (getHeadResult): New function. (UrlRequestInfo): Added digestAlgo, chunkChecksumLength. (setDigestAlgo): New function. (setChunkChecksumLength): New function. (setChunkChecksums): New function. * src/DefaultPieceStorage.cc (DiskAdaptorWriter.h): New include. (ChunkChecksumValidator.h): New include. (markAllPiecesDone): New function. (checkIntegrity): New function. * src/DefaultBtContext.h (getPieceHashes): New function. * src/TorrentRequestInfo.cc (execute): Try to validate chunk checksum if file already exists and .aria2 file doesn't there and user allows aria2 to overwrite it. * src/messageDigest.h (~MessageDigestContext): Added digestFree(). * src/MetalinkRequestInfo.cc (execute): Set digestAlgo, chunkChecksum, chunkChecksums to reqInfo. * src/DiskAdaptor.h (messageDigest.h): New include. (sha1Sum): Renamed as messageDigest. (messageDigest): New function. * src/DownloadCommand.h (PeerStat.h): New include. (maxDownloadSpeedLimit): New variable. (startupIdleTime): New variable. (lowestDownloadSpeedLimit): New variable. (peerStat): New variable. (setMaxDownloadSpeedLimit): New function. (setStartupIdleTime): New function. (setLowestDownloadSPeedLimit): New function. * src/BtContext.h (getPieceHashes): New function. * src/main.cc (main): Set PREF_REALTIME_CHUNK_CHECKSUM and PREF_CHECK_INTEGRITY option to true for testing purpose. * src/BtPieceMessage.cc (checkPieceHash): Use messageDigest * src/DownloadEngine.cc (SetDescriptor): Removed. (AccumulateActiveCommand): Removed. (waitData): Rewritten. (updateFdSet): Rewritten. * src/MultiDiskAdaptor.cc (hashUpdate): Added ctx. (sha1Sum): Renamed as messageDigest. (messageDigest): New function. * src/BitfieldMan.h (isBitRangeSet): New function. (unsetBitRange): New function. * src/ByteArrayDiskWriter.h (sha1Sum): Renamed as messageDigest. (messageDigest): New function. * src/ConsoleDownloadEngine.cc (calculateStatistics): If nspeed < 0 then set nspeed to 0. * src/DiskWriter.h (messageDigest.h): New include. (sha1Sum): Renamed as messageDigest. (messageDigest): New function. * src/ChunkChecksumValidator.h: New class. * src/DiskAdaptorWriter.h: New class. * src/prefs.h (PREF_REALTIME_CHUNK_CHECKSUM): New definition. (PREF_CHECK_INTEGRITY): New definition. * src/HttpResponseCommand.cc (handleDefaultEncoding): Added method "HEAD" handling. Removed the call to e->segmentMan->shouldCancelDownloadForSafety(). (handleOtherEncoding): Added the call to e->segmentMan->shouldCancelDownloadForSafety(). (createHttpDownloadCommand): Set maxDownloadSpeedLimit, startupIdleTime, lowestDownloadSpeedLimit to command. * src/SegmentMan.h (getSegmentEntryByIndex): New function. (getSegmentEntryByCuid): New function. (getSegmentEntryIteratorByCuid): New function. (diskWriter): DiskWriter -> DiskWriterHandle (pieceHashes): New variable. (chunkHashLength): New variable. (digestAlgo): New variable. (FindPeerStat): Removed. (getPeerStat): Rewritten. (markAllPiecesDone): New function. (checkIntegrity): New function. (tryChunkChecksumValidation): New function. (isChunkChecksumValidationReady): New function. * src/BitfieldMan.cc (BitfieldMan): Initialized bitfieldLength, blocks to 0. (BitfieldMan): Initialized blockLength, totalLength, bitfieldLength, blocks to 0. (isBitRangeSet): New function. (unsetBitRange): New function. * src/FtpNegotiateCommand.cc (executeInternal): Set maxDownloadSpeedLimit, startupIdleTime, lowestDownloadSpeedLimit to command. (recvSize): Added method "HEAD" handling. Removed the call to e->segmentMan->shouldCancelDownloadForSafety(). * src/AbstractSingleDiskAdaptor.cc (sha1Sum): Renamed as messageDigest. (messageDigest): New function. * src/AbstractSingleDiskAdaptor.h (sha1Sum): Renamed as messageDigest. (messageDigest): New function. * src/Util.h (indexRange): New function. * src/MetalinkEntry.cc (MetalinkEntry): Initialized chunkChecksum to 0. * src/ShaVisitor.cc (~ShaVisitor): Removed the call to ctx.digestFree(). * src/SegmentMan.cc (ChunkChecksumValidator.h): New include. (SegmentMan): Initialized chunkHashLength to 0. Initialized digestAlgo to DIGEST_ALGO_SHA1. (~SegmentMan): Removed diskWriter. (FindSegmentEntryByIndex): Removed. (FindSegmentEntryByCuid): Removed. (checkoutSegment): Rewritten. (findSlowerSegmentEntry): Rewritten. (getSegment): Rewritten. (updateSegment): Rewritten. (completeSegment): Rewritten. (markAllPiecesDone): New function. (checkIntegrity): New function. (isChunkChecksumValidationReady): New function. (tryChunkChecksumValidation): New function. * src/Xml2MetalinkProcessor.cc (getEntry): Get size and set it to entry. Get chunk checksum and set it to entry. (getPieceHash): New function. * src/Util.cc (sha1Sum): Removed ctx.digestFree() (fileChecksum): Removed ctx.digestFree() (indexRange): New function. * src/Request.cc (METHOD_GET): New variable. (METHOD_HEAD): New variable. (Request): Added method. * src/UrlRequestInfo.cc (FatalException.h): New include. (message.h): New include. (operator<<): Added operator<< for class HeadResult. (getHeadResult): New function. (execute): Get filename and size in separate download engine. * src/ChunkChecksumValidator.cc: New class. * src/DownloadCommand.cc: (DownloadCommand): Added peerStat. (executeInternal): Use maxDownloadSpeedLimit member instead of getting the value from Option. The buffer size is now 16KB. Use peerStat member instead of getting it from SegmentMan. Use startupIdleTime member instead of gettingit from Option. Added chunk checksum validation. * src/AbstractDiskWriter.cc (AbstractDiskWriter): Removed ctx. (~AbstractDiskWriter): Removed ctx.digestFree() (writeDataInternal): Returns the return value of write. (readDataInternal): Returns the return value of read. (sha1Sum): Renamed as messageDigest (messageDigest): New function. * src/AbstractDiwkWriter.h (messageDigest.h): Removed include. (ctx): Removed. (sha1Sum): Renamed as messageDigest (messageDigest): New function. * src/DefaultPieceStorage.h (markAllPiecesDone): New function. (checkIntegrity): New function. * src/NullFileAllocationMonitor.h: New class.
* 2006-11-09 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2006-11-081-9/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To add Metalink location option: * src/MetalinkRequestInfo.cc (execute): Call MetalinkEntry::setLocationPreference() * src/main.cc (showUsage): Added the help message for --metalink-location option. (main): Added --metalink-location option. * src/prefs.h (PREF_METALINK_LOCATION): New definition. * src/MetalinkEntry.cc (AddLocationPreference): New function object. (setLocationPreference): New function. * src/Xml2MetalinkProcessor.cc (getResource): Set location attribute to MetalinkResource To show URLs to download * src/UrlRequestInfo.h (printUrls): New function. To add multiple <file> Metalink support: * src/MetalinkEntry.h (MetalinkResources): Removed. (setLocationPreference): New function. (MetalinkEntryHandle): New type definition. (MetalinkEntries): New type definition. * src/Xml2MetalinkProcessor.h (getEntry): MetalinkEntry* -> MetalinkEntryHandle (getResource): MetalinkResource* -> MetalinkResourceHandle (parseFile): Metalinker* -> MetalinkerHandle * src/UrlRequestInfo.h (execute): RequestInfo* -> RequestInfos * src/MetalinkRequestInfo.cc (AccumulateNonP2PUrl): MetalinkResource* -> MetalinkResourceHandle (FindBitTorrentUrl): MetalinkResource* -> MetalinkResourceHandle (execute): RequestInfo* -> RequestInfos Added multiple <file> support. Print filename when it is queued. * src/MetalinkRequestInfo.h (execute): RequestInfo* -> RequestInfos (getDownloadEngine): Removed. * src/RequestInfo.h (RequestInfoHandle): New type definition. (RequestInfos): New type definition. (execute): RequestInfo* -> RequestInfos (getDownloadEngine): Removed. * src/MetalinkResource.h (MetalinkResourceHandle): New type definition. (MetalinkResources): New type definition. * src/MetalinkEntry.cc (~MetalinkEntry): Removed the deletion of the elements of resources, because the element is now of type MetalinkResourceHandle. (PrefOrder): MetalinkResource* -> MetalinkResourceHandle (Supported): MetalinkResource* -> MetalinkResourceHandle (dropUnsupportedResource): Removed the deletion of the elements of resources because the element is now of type MetalinkResourceHandle. * src/Xml2MetalinkProcessor.cc (parseFile): Metalinker* -> MetalinkerHandle MetalinkEntry* -> MetalinkEntryHandle Removed try-catch block. (getEntry): MetalinkEntry* -> MetalinkEntryHandle MetalinkResource* -> MetalinkResourceHandle Removed try-catch block. (getResource): MetalinkResource* -> MetalinkResourceHandle Free result by using xmlXPathFreeObject() * src/Metalinker.cc (~Metalinker): Removed the deletion of entries. MetalinkEntry* -> MetalinkEntryHandle (queryEntry): Add multiple <file> Metalink support. * src/Metalinker.h (MetalinkEntries): Removed. (queryEntry): MetalinkEntry* -> MetalinkEntries * src/MetalinkProcessor.h (parseFile): Metalinker* -> MetalinkerHandle Bug fixes: * src/PeerChokeCommand.cc (execute): cat01->cat02 * src/DefaultPieceStorage.cc (DefaultPieceStorage): Added diskAdaptor(0) * src/TrackerWatcherComand.cc: (execute): Use btAnnounce->noMoreAnnounce() to determin whether the function returns true or not. * src/TrackerUpdateCommand.cc: (execute): Use btAnnounce->noMoreAnnounce() to determin whether the function returns true or not. * src/FtpConnection.cc (bulkReceiveResponse): Throw DlRetryEx if EOF got. This is the fix of the busy loop bug. * src/DownloadCommand.cc (DownloadCommand): Reuse PeerStat. segmentMan->getPeerStat() returns cached PeerStat. The value of "name" entry in torrent file is now set by *DiskAdaptor::setTopDir(...) methods. * src/MultiDiskAdaptor.h (topDir): New variable. (setTopDir): New function. (getTopDir): New function. * src/MultiDiskAdaptor.cc (getFilePath): Concat storDir, "/" and topDir. (mkdir): Use getFilePath() to get the directory path for output. * src/DefaultPieceStorage.cc (initStorage): Set the value of "name" entry to MultiDiskAdaptor, CopyDiskAdaptor. * src/CopyDiskAdaptor.h (topDir): New variable. (setTopDir): New function. (getTopDir): New function. * src/CopyDiskAdaptor.cc (fixFilename): Updated. Misc * src/UrlRequestInfo.h (e): Removed. (UrlRequestInfo): Removed e. (getDownloadEngine): Removed. * src/UrlRequestInfo.cc (handler): Rewritten. (printUrls): New function. (execute): Call printUrls(). * src/HandshakeMessage.cc (check): peerinteraction->getBtContext() -> btContext * src/PeerInteraction.h (getBtContext): Removed. * src/TorrentRequestInfo.h (execute): RequestInfo* -> RequestInfos (getDownloadEngine): Removed. * src/TorrentRequestInfo.cc (haltRequested): Removed. (btHaltRequested): New variable. (torrentHandler): haltRequested -> btHaltRequested (execute): RequestInfo* -> RequestInfos * src/TorrentConsoleDownloadEngine.cc (afterEachIteration): haltRequested -> btHaltRequested. * src/ConsoleDownloadEngine.h (initStatistics): Added virtual. (calculateStatistics): Added virtual. (onEndOfRun): Added virtual. (afterEachIteration): Added virtual. * src/ConsoleDownloadEngine.cc (haltRequested): New variable. (afterEachIteration): New function. * src/main.cc (requestInfo): Removed. * src/SegmentMan.cc (findSlowerSegmentEntry): Refactored.
* 2006-09-22 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2006-09-211-2/+15
| | | | | | | | * src/*.{h,cc}: Added an exception to the license which allows linking with OpenSSL.
* * src/PeerChokeCommand.ccTatsuhiro Tsujikawa2006-09-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (optUnchokingPeer): Updated according to the changes in Peer. (ResetDelta): Removed. (UploadFaster): Updated according to the changes in Peer. (DownloadFaster): Updated according to the changes in Peer. (execute): I clarify the meaning of "upload" and "download" here. "upload" means the transfer from localhost to remote host. "download" means the transfer from remote host to localhost. Based on this rule, I swapped orderByUploadRate and orderByDownloadRate. * src/PeerInteractionCommand.cc (PeerInteraction): Removed peerInteraction->setUploadLImit(). (executeInternal): Removed the argument of peerInteraction->sendMessages(). (receiveMessages): Rewritten download speed limit. (sendKeepAlive): Removed peerInteraction->sendMessages(). * src/HttpResponseCommand.cc (handleDefaultEncoding): If file size is unknown in torrent request, do not call segmentMan->initBitfield() here. Disabled persistent connection feature in torrent request. * src/UrlRequestInfo.h (UrlRequestInfo): Removed const qualifier from option. * src/TorrentMan.h (TransferStat): New class. (deltaDownloadLength): Removed. (deltaUploadLength): Removed. (addDeltaDownloadLength): Removed. (getDeltaDownloadLength): Removed. (resetDeltaDownloadLength): Removed. (addDeltaUploadLength): Removed. (getDeltaUploadLength): Removed. (resetDeltaUploadLength): Removed. (addActivePeer): Added peer->activate(). (deleteActivePeer): Added peer->deactivate(). (calculateStat): New function. * src/TorrentMan.cc (TorrentMan): Removed deltaDownloadLength and deltaUploadLength. (calculateStat): New function. * src/PeerInteraction.h (uploadLimit): Removed. (option): New variable. (setUploadLimit): Removed. (getUploadSpeed): Removed. (sendMessages): Removed the argument "currentUploadSpeed". * src/PeerInteraction.cc (prefs.h): Included. (PeerInteraction): Removed uploadLimit. Added option. (sendMessages): Rewritten upload speed limit. (sendHandshake): Removed the argument from sendMessages(). (sendBitfield): Removed the argument from sendMessages(). * src/PeerAbstractCommand.cc (execute): Commented out the portion of upload limit. (onAbort): Removed peer->resetStatus(). * src/TorrentRequestInfo.cc (timeoutSpecified): Declared extern. (execute): Set timeout to 180 if timeout is not specified by. command-line. * src/PieceMessage.cc (receivedAction): Added peer->updateDownloadLength(). Removed peer->addPeerUpload(). Removed torrentMan->addDeltaDownloadLength(). (send): Added peer->updateUploadLength(). Removed peer->addPeerDownload(). Removed torrentMan->addDeltaUploadLength(). * src/main.cc (timeoutSpecified): New variable. (main): Set timeoutSpecified to false. If the command-line option "--upload-limit" is specified, then timeoutSpecified is set to true. This option will remain in the next release, but be deprecated in the future release. * src/TorrentRequestInfo.h (TorrentRequestInfo): Removed const qualifier from op. * src/PeerStat.h (uploadSpeed): New variable. (PeerStat): Added default value to cuid. (calculateUploadSpeed): New function. (updateUploadLength): New function. (getMaxUploadSpeed): New function. (getAvgUploadSpeed): New function. (reset): Added uploadSpeed. Set status to IDLE. * src/TorrentDownloadEngine.h (cp): Declared as Time. (sessionDownloadLengthArray): Removed. (sessionUploadLengthArray): Removed. (currentCp): Removed. (lastCalcStat): New variable (lastElapsed): Removed. (sessionDownloadLength): Removed. (calculateStat): New function. * src/TorrentDownloadEngine.cc (initStatistics): Removed lastElapsed, cp[], sessionDownloadLengthArray[], sessionUploadLengthArray[], currentCp, sessionDownloadLength. Added cp.reset() and lastCalcStat.reset(). (calculateSpeed): Changed the name of the argument. (calculateStatistics): Rewritten. (calculateStat): New function. * src/Peer.h (PeerStat.h): Included. (peerUpload): Removed. (peerDownload): Removed. (peerStat): New variable. (sessionUploadLength): New variable. (sessionDownloadLength): New variable. (deltaUpload): Removed. (deltaDownload): Removed. (resetStatus): Made private. (Peer): Added sessionUploadLength, sessionDownloadLength. Removed peerUpload, peerDownload. (updateUploadLength): New function. (addDeltaUpload): Removed. (updateDownloadLength): New function. (resetDeltaUpload): Removed. (getDeltaUpload): Removed. (addDeltaDownload): Removed. (calculateUploadSpeed): New function. (resetDeltaDownload): Removed. (getDeltaDownload): Removed. (calculateDownloadSpeed): New function. (getSessionUploadLength): New function. (getSessionDownloadLength): New function. (activate): New function. (deactivate): New function. (addPeerUpload): Removed. (setPeerUpload): Removed. (getPeerUpload): Removed. (addPeerDownload): Removed. (setPeerDownload): Removed. (getPeerDownload): Removed. * src/Peer.cc (resetStatus): Removed resetDeltaUpload() and resetDeltaDownload(). * src/MetalinkRequestInfo.h (MetalinkRequestInfo): Removed const qualifier from op. * src/RequestInfo.h (op): Removed const qualifier. (RequestInfo): Removed const qualifier from op.
* 2006-08-08 Tatsuhiro Tsujikawa <tujikawa@rednoah.com>Tatsuhiro Tsujikawa2006-08-071-0/+52
* src/FtpNegotiateCommand.cc (recvGreeting): Call disableWriteCheckSocket just after socket->setBlockingMode(). This avoids unnecessary CPU-hog loop. 2006-08-07 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com> * src/PeerChokeCommand.h (PeerChokeCommand): Rearranged the arguments. * src/PeerChokeCommand.cc (PeerChokeCommand): Rearranged the arguments. * src/MetalinkEntry.h (Checksum.h): Included. (md5): Removed. (sha1): Removed. (checksum): New variable. (operator=): Updated. (check): Removed. * src/prefs.h (PREF_LOWEST_SPEED_LIMIT): New definition. (PREF_FOLLOW_TORRENT): New definition. (PREF_SELECT_FILE): New definition. (PREF_FOLLOW_METALINK): New definition. * src/MetalinkResource.h (TYPE_HTTPS): Added to enum TYPE. * src/TorrentMan.cc (~TorrentMan): Rewritten. * src/MultiDiskWriter.cc (MultiDiskAdaptor): Updated according to the changes in MessageDigestContext. (~MultiDiskAdaptor): Updated according to the changes in MessageDigestContext. (hashUpdate): Updated according to the changes in MessageDigestContext. (sha1Sum): Updated according to the changes in MessageDigestContext. * src/Util.h (fileChecksum): Updated according to the changes in MessageDigestContext. * src/Util.cc (sha1Sum): Updated according to the changes in MessageDigestContext. (fileChecksum): Updated according to the changes in MessageDigestContext. * src/messageDigest.h: Rewritten. * src/MetalinkEntry.cc (check): Removed. (Supported): Updated. (dropUnsupportedResource): Fixed a memory leak. * src/ShaVisitor.cc (ShaVisitor): Updated according to the changes in MessageDigestContext. (~ShaVisitor): Updated according to the changes in MessageDigestContext. (visit): Updated according to the changes in MessageDigestContext. * src/main.cc (main): Rewritten the portion of download loop. --lowest-speed-limit command-line option added. * src/DownloadEngine.h (SocketEntry): New class. (SocketEntries): New definition. (PairFind): Removed. (SockCmdMap): Removed. * src/DownloadEngine.cc (DownloadEngine): Rewritten. (~DownloadEngine): Rewritten. (run): Renamed activeCommandUuids as activeUuids. (SetDescriptor): Rewritten. (AccumulateActiveCommandUuid): Removed. (AccumulateActiveUuid): New function object. (waitData): Rewritten. (updateFdSet): Rewritten. (addSocket): Rewritten. (deleteSocket): Rewritten. (addSocketForReadCheck): Rewritten. (deleteSocketForReadCheck): Rewritten. (addSocketForWriteCheck): Rewritten. (deleteSocketForWriteCheck): Rewritten. * src/Xml2MetalinkProcessor.cc (getEntry): Rewritten the portion of MetalinkEntry creation. * src/DownloadCommand.cc (executeInternal): Added the check routine for lowest speed limit. * src/AbstractDiskWriter.cc (AbstractDiskWriter): Updated according to the changes in MessageDigestContext. (~AbstractDiskWriter): Updated according to the changes in MessageDigestContext. (sha1Sum): Updated according to the changes in MessageDigestContext. * src/RequestInfo.h: New class. * src/UrlRequestInfo.h: New class. * src/UrlRequestInfo.cc: New class. * src/TorrentRequestInfo.h: New class. * src/TorrentRequestInfo.cc: New class. * src/MetalinkRequestInfo.h: New class. * src/MetalinkRequestInfo.cc: New class. * src/Checksum.h: New class. * src/DownloadEngineFactory.h: New class. * src/DownloadEngineFactory.cc: New class.