Added --max-download-result=NUM option. This option sets maximum
number of download result kept in memory. The download results are
completed/error/ removed downloads. The download results are
stored in FIFO queue and it can store at most NUM download
results. When queue is full and new download result is created,
oldest download result is removed from the front of the queue and
new one is pushed to the back. Setting big number in this option
may result high memory consumption after thousands of
downloads. Specifying 0 means no download result is kept. Default
value is 1000.
* src/OptionHandlerFactory.cc
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
FeedbackURISelector now tries to chooses URI which is not used in
aria2 globally. If it is possible, it may return used URI.
* src/AdaptiveURISelector.cc
* src/AdaptiveURISelector.h
* src/CreateRequestCommand.cc
* src/FeedbackURISelector.cc
* src/FeedbackURISelector.h
* src/FileEntry.cc
* src/FileEntry.h
* src/InOrderURISelector.cc
* src/InOrderURISelector.h
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/URISelector.h
* test/FeedbackURISelectorTest.cc
* test/InOrderURISelectorTest.cc
Only execute RequestGroupMan::fillRequestGroupFromReserver() when
queue maintenance is requested by RequestGroup to avoid to call
the function unnecessarily.
* src/FillRequestGroupCommand.cc
* src/RequestGroup.cc
* src/RequestGroup.h
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
Added changePosition XML-RPC method. It takes 3 parameters: gid,
pos and how. This method changes the position of download denoted
by gid. If how is POS_SET, it moves the download to a position
relative to the beginning of the queue. If how is POS_CUR, it
moves the download to a position relative to the current
position. If how is POS_END, it moves the download to a position
relative to the end of the queue. If the destination position is
less than 0 or beyond the end of the queue, it moves the download
to the beginning or the end of the queue respectively. Returns
the destination position.
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/XmlRpcMethodFactory.cc
* src/XmlRpcMethodImpl.cc
* src/XmlRpcMethodImpl.h
* test/RequestGroupManTest.cc
* test/XmlRpcMethodTest.cc
Throw exception if binding listening port is failed. Removed
RequestGroupMan::getInitialCommand(). Use
fillRequestGroupFromReserver() instead. Delete commands for
RequestGroup which has errors when it is being added.
* src/BtSetup.cc
* src/DownloadEngine.cc
* src/DownloadEngine.h
* src/DownloadEngineFactory.cc
* src/MultiUrlRequestInfo.cc
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* test/RequestGroupManTest.cc
Added _xmlRpc member variable to RequestGroupMan to reduce the
number of call Option::getAsBool(PREF_ENABLE_XML_RPC)
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
Added remove xml-rpc command which removes specified download.
There is a known issue: the removed unfinished downloads are
reported ERR when aria2 exits. They should be reported as INPR.
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/XmlRpcMethodFactory.cc
* src/XmlRpcMethodImpl.cc
* src/XmlRpcMethodImpl.h
Added xml-rpc functionality. Currently only addURI commad is
supported. To enable xml-rpc, run aria2 with
--enable-http-server. This option name is temporal and will be
changed. The feature that reports download progress in html format
is temporarily disabled.
* src/HttpServer.cc
* src/HttpServer.h
* src/HttpServerBodyCommand.cc
* src/HttpServerBodyCommand.h
* src/HttpServerCommand.cc
* src/HttpServerResponseCommand.cc
* src/Makefile.am
* src/OptionParser.cc
* src/OptionParser.h
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/XmlRpcMethod.cc
* src/XmlRpcMethod.h
* src/XmlRpcMethodFactory.cc
* src/XmlRpcMethodFactory.h
* src/XmlRpcMethodImpl.cc
* src/XmlRpcMethodImpl.h
* src/download_helper.cc
* src/download_helper.h
* test/Makefile.am
* test/XmlRpcMethodTest.cc
Added --max-overall-download-limit option. Now
--max-upload-limit option is not ignored when
--max-overall-upload-limit option has non-zero value. aria2
checks download(upload) speed in the order:
first checks overall speed limit and if it is not exceeded, then
checks speed limit per download. Thus you can specify both
value. For example, set --max-overall-download-limit=1M and
--max-download-limit=500K to prevent from one download from
eating all overall speed limit.
* src/DefaultBtInteractive.cc
* src/DefaultBtInteractive.h
* src/DefaultBtMessageDispatcher.cc
* src/DefaultBtMessageDispatcher.h
* src/DownloadCommand.cc
* src/DownloadCommand.h
* src/FtpNegotiationCommand.cc
* src/HttpResponseCommand.cc
* src/OptionHandlerFactory.cc
* src/PeerInteractionCommand.cc
* src/RequestGroup.cc
* src/RequestGroup.h
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
* test/DefaultBtMessageDispatcherTest.cc
Applied exit-status patch from Pascal Rigaux at Mandriva. aria2
now returns last error encountered in the HTTP/FTP downloads as
a exit status value. If all downloads finished successfully,
aria2 returns 0. The error code is defined in
src/DownloadResult.h.
The error occurred in the download currently in progress is not
reported as a last error. If no error has encountered but there
are in progress or waiting downloads, aria2 returns 7.
* src/AbstractCommand.cc
* src/DlAbortEx.h
* src/DlRetryEx.h
* src/DownloadCommand.cc
* src/DownloadFailureException.h
* src/DownloadResult.h
* src/FtpNegotiationCommand.cc
* src/HttpSkipResponseCommand.cc
* src/Makefile.am
* src/MultiUrlRequestInfo.cc
* src/MultiUrlRequestInfo.h
* src/RecoverableException.h
* src/RequestGroup.cc
* src/RequestGroup.h
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/URIResult.cc
* src/URIResult.h
* src/main.cc
* src/option_processing.cc
* test/RequestGroupTest.cc
Added options to load/save the server's performance/status to a
file
and the timeout to drop their data.
--server-stat-of=FILE specifies the file to which performance
data
is saved.
--server-stat-if=FILE specifies the file to read previously
saved
by --server-stat-of option. Might be used with
--uri-selector=feedback.
--server-stat-timeout=TIMEOUT specifies timeout to invalidate
the data.
TIMEOUT is specified in seconds and the default value is
24hours.
* src/MultiUrlRequestInfo.cc
* src/OptionHandlerFactory.cc
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/ServerStatMan.cc
* src/ServerStatMan.h
* src/option_processing.cc
* src/prefs.cc
* src/prefs.h
* test/ServerStatManTest.cc
Implemented download speed based URI selection algorithm.
Introduced new option --uri-selector.
If --uri-selector=feedback is given, aria2 uses download speed
observed
in the previous downloads and chooses fastest server in the URI
list.
Currently at most 10 URIs are considered to introduce
randomeness for
finding better servers. The speed is average download speed in
the
downloads.
On the other hand, if --uri-selector=inorder is given, which is
default,
URI is tried in order in URI list.
The usage text for the new option has not been written yet.
* src/AbstractCommand.cc
* src/DownloadCommand.cc
* src/DownloadEngine.cc
* src/DownloadEngineFactory.cc
* src/InOrderURISelector.cc
* src/InOrderURISelector.h
* src/OptionHandlerFactory.cc
* src/PeerStat.h
* src/RequestGroup.cc
* src/RequestGroup.h
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/SegmentMan.cc
* src/SegmentMan.h
* src/ServerStat.cc
* src/ServerStat.h
* src/ServerStatMan.cc
* src/ServerStatMan.h
* src/ServerStatURISelector.cc
* src/ServerStatURISelector.h
* src/URISelector.h
* src/option_processing.cc
* src/prefs.cc
* src/prefs.h
* test/InOrderURISelectorTest.cc
* test/RequestGroupManTest.cc
* test/ServerStatManTest.cc
* test/ServerStatURISelectorTest.cc
Print download progress summary of all parallel downloads in specified
interval, default 60 secs. While aria2 could download several files
in parallel (see -j option), it displayed just first download progress,
and the other downloads are hidden from the users. This new feature
prints all downloads currently in-progress to the console so that you
can check the status of all downloads. The interval can be adjusted
by --summary-interval option.
The progress readout is now cut so that all fits in the one line of
console.
* src/ConsoleStatCalc.cc
* src/ConsoleStatCalc.h
* src/HelpItemFactory.cc
* src/OptionHandlerFactory.cc
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/main.cc
* src/option_processing.cc
* src/prefs.h
* src/usage_text.h
Added StringFormat class, which internally calls vasprintf.
operator<< is defined for this class, so it can be used with iostream
classes nicely. SimpleLogger and following functions are rewritten
using StringFormat class.
Besides, now Logger class's methods are non-const, many classes
that has a const Logger* as a member variable are modified to remove
const qualifier from the variable declaration.
* src/HelpItemFactory.cc
* src/Request.cc
* src/SimpleLogger.cc
* src/StringFormat.cc
* src/StringFormat.h
* src/Util.cc
* src/option_processing.cc
* src/version_usage.cc
* test/StringFormatTest.cc
* src/*.h: The classes that has const Logger* as a member variable.
Fixed the bug that a return code is always 0. BUG#1897704
If error occurred during the download or there exist unfinished
downloads, aria2 returns with code 1.
* src/RequestGroupMan.{h, cc}
* src/MultiUrlRequestInfo.{h, cc}
* src/main.cc
Fixed the bug#1845750; CTRL+C does not stop torrent.
aria2 repeatedly sends stopped request when tracker returns error code.
* src/AnnounceList.cc
* test/AnnounceListTest.cc
* src/AnnounceTier.h
Added a message when ctrl-c is hit.
Now second ctrl-c is also handled in signal handler.
* src/RequestGroupMan.{h, cc}
* src/RequestGroup.{h, cc}
* src/MultiUrlRequestInfo.cc
* src/DownloadEngine.cc
* src/TrackerWatcherCommand.cc
Rewritten to add content-type support.
* src/DownloadHandler.{h, cc}
* src/BtPostDownloadHandler.{h, cc}
* test/BtPostDownloadHandlerTest.cc
* src/MetalinkPostDownloadHandler.{h, cc}
* test/MetalinkPostDownloadHandlerTest.cc
* src/PostDownloadHandler.{h, cc}
* src/DownloadHandlerConstants.{h, cc}
* src/RequestGroup.cc
* src/HttpResponseCommand.cc
* src/FtpNegotiationCommand.cc
* src/SingleFileDownloadContext.{h, cc}
* src/RequestGroup.h
* src/RequestGroupCriteria.h
* src/ContentTypeRequestGroupCriteria.h
Added 'mem' option value for --follow-metalink,
--follow-torrent.
If it is give, metalink/torrent file is not written to the disk,
but
just is kept in memory. Parsing is occurred on memory.
* src/MetalinkHelper.{h, cc}
* src/MetalinkProcessor.h
* src/Xml2MetalinkProcessor.{h, cc}
* test/Xml2MetalinkProcessorTest.cc
* src/DownloadHandlerFactory.{h, cc}
* test/DownloadHandlerFactoryTest.cc
* src/PreDownloadHandler.{h, cc}
* src/OptionHandlerFactory.cc
* src/DefaultBtContext.{h, cc}
* test/DefaultBtContextTest.cc
* src/version_usage.cc
* src/Metalink2RequestGroup.{h, cc}
* src/RequestGroup.{h, cc}
* src/a2functional.h
* test/a2functionalTest.cc
* src/MemoryBufferPreDownloadHandler.{h, cc}
* src/OptionHandlerImpl.h
* src/prefs.h
* src/Util.{h, cc}
* test/UtilTest.cc
Keep DownloadResult rather than RequestGroup after downloads to
reduce
memory usage.
* src/RequestGroupMan.{h, cc}
* src/DownloadEngine.cc
* src/BtDependency.{h, cc}: Changed the type of dependee from
WeakHandle to SharedHandle because WeakHandle could be null.
* src/RequestGroup.{h, cc}
* src/DownloadEngineFactory.cc
* src/DownloadResult.h
Set totalLength after download finished
* src/UnknownLengthPieceStorage.{h, cc}
Keep torrent file specified in metalink in memory.
* src/Metalink2RequestGroup.cc
* src/BtDependency.cc
* src/TrueRequestGroupCriteria.h
Fixed the bug: seekg is used where seekp should be used.
* src/ByteArrayDiskWriter.cc
* test/ByteArraydiskWriterTest.cc
Implemented BitTorrent/http/ftp integrated download.
I've rewritten lots of files and now some headers have forward
class declarations to reduce compile time.
The implementation is extremely alpha stage, I recommend to use this
for testing purpose only.
RequestGroup::getNextCommand() was renamed to
createNextCommand().
Added its overloaded method.
* src/RequestGroup.h
(_numConcurrentCommand): New variable.
(setNumConcurrentCommand): New function.
* src/RequestGroup.cc
Abort download if same file is being downloaded concurrently.
* src/RequestGroup.h, src/RequestGroupMan.cc
(isSameFileBeingDownloaded): New function.
* src/HttpResponseCommand.cc (executeInternal)
* src/FtpNegotiateCommand.cc (recvSize)
* src/message.h (EX_DUPLICATE_FILE_DOWNLOAD): New definition.
* main.cc: Added help message for -i option.
Change file mode to 666:
* src/common.h (OPEN_MODE): New definition.
* src/File.cc
* src/Util.cc
* src/Directry.cc
* src/AbstractDiskWriter.cc
Change the level of log message "download aborted" to debug:
* src/PeerAbstractCommand.cc (execute)
* src/RequestGroup.h (RequestGroup): Initialized
_hintTotalLength to 0.
* src/TrackerWatcherCommand.cc
(createCommand): Sleep some seconds after request failed.
If tracker request fails more than value of
PREF_TRACKER_MAX_TRIES,
then abort tracker request.