Documented additional options that can be specified in -i list.
Documented --enable-xml-rpc, --xml-rpc-listen-port, --xml-rpc-user
and --xml-rpc-passwd. Removed --enable-http-server and
--http-server-listen-port.
* doc/aria2c.1.txt
DownloadResult now has the list of FileEntry. The download
summary displays the path of first selected file and the number of
remaining files for multi-file torrent.
* src/DownloadResult.h
* src/RequestGroup.cc
* src/RequestGroupMan.cc
* test/RequestGroupTest.cc
Throw DlAbortEx instead of FatalException during parsing options
because we don't want for aria2 to quit when bad option is passed
via XML-RPC.
* src/OptionHandlerException.cc
* src/OptionHandlerException.h
* src/OptionHandlerImpl.h
* src/OptionParser.cc
* src/OptionParser.h
* src/PStringSegment.cc
* src/ParameterizedStringParser.cc
* src/download_helper.cc
* test/ParameterizedStringParserTest.cc
Selecting files are now done in
DefaultBtContext::setFileFileter().
PieceStorage::setFileFilter(), DiskAdaptor::addDownloadEntry()
functions are removed because they are no longer used. Creating
filter in BitfieldMan is done in new funtion
PieceStorage::setupFileFilter()
* src/BtContext.cc
* src/BtContext.h
* src/DefaultBtContext.cc
* src/DefaultBtContext.h
* src/DefaultPieceStorage.cc
* src/DefaultPieceStorage.h
* src/DiskAdaptor.cc
* src/DiskAdaptor.h
* src/PieceStorage.h
* src/RequestGroup.cc
* src/UnknownLengthPieceStorage.h
* src/XmlRpcMethodImpl.cc
* test/DefaultBtContextTest.cc
* test/MockBtContext.h
* test/MockPieceStorage.h
The information for files, URIs, peers are removed from the
reponse of TellaActive, TellStatus command because they tend to be
large. Instead they can be retrieved by the dedicated commands:
getFiles, getUris and getPeers respectively.
* src/XmlRpcMethodFactory.cc
* src/XmlRpcMethodImpl.cc
* src/XmlRpcMethodImpl.h
Added "uris" key to the response of tellStatus command. Added
"connections" key to the response of tellStatus and tellActive
command.
* src/XmlRpcMethodImpl.cc
Return fault structure for error. FailXmlRpcMethod is renamed as
NoSuchMethodXmlRpcMethod. pieceLength and numPieces are returned
in non-torrent download. Return single param value.
* src/XmlRpcMethod.cc
* src/XmlRpcMethodFactory.cc
* src/XmlRpcMethodImpl.cc
* src/XmlRpcMethodImpl.h
* test/XmlRpcMethodTest.cc
Added tellActiveStatus xml-rpc command which reports download
status of active downloads.
* src/XmlRpcMethodFactory.cc
* src/XmlRpcMethodImpl.cc
* src/XmlRpcMethodImpl.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
If --enable-http-server is enabled, don't stop aria2 when all
download finished and don't quit when no files to download at
start up.
* src/RequestGroupMan.cc
* src/main.cc
* src/option_processing.cc
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
Don't retrieve PREF_MAX_DOWNLOAD_LIMIT and PREF_MAX_UPLOAD_LIMIT
from option directly. Instead, get them from RequestGroup.
* src/ActivePeerConnectionCommand.cc
* src/ActivePeerConnectionCommand.h
* src/PeerReceiveHandshakeCommand.cc
* src/RequestGroup.h
Generated configure and Makefile.in using autoconf 2.63 and
automake 1.10.2. Removed AC_GNU_SOURCE from configure.ac because
it is subset of AC_USE_SYSTEM_EXTENSIONS and we use latter.
* configure.ac
Added static member _protocolFamily to SocketCore. By default,
SocketCore uses AF_UNSPEC for getaddrinfo hints to resolve
address. Sometime SocketCore::bind() and
SocketCore::establishConnection() use difference protocl family
and latter cannot connect to former. To avoid this situation, we
limit protocol family to AF_INET for unit tests.
* src/SocketCore.cc
* src/SocketCore.h
* test/AllTest.cc
In DefaultBtContext::getActualBasePath(), return first
FileEntry::getPath() for single file torrent.
* src/DefaultBtContext.cc
* test/DefaultBtContextTest.cc
Now the constructor of AbstractDiskWriter takes filename as an
argument and filename argument is removed from openFile(),
initAndOpenFile(), openExistingFile() interface. storeDir
member and its accessor functions are removed from DiskAdaptor
because it is not used anymore. size() member function of
DefaultDiskWriter, DirectDiskAdaptor and MultiDiskAdaptor now
can be called without opening file.
* src/AbstractDiskWriter.cc
* src/AbstractDiskWriter.h
* src/AbstractSingleDiskAdaptor.cc
* src/AbstractSingleDiskAdaptor.h
* src/ByteArrayDiskWriter.cc
* src/ByteArrayDiskWriter.h
* src/ByteArrayDiskWriterFactory.cc
* src/ByteArrayDiskWriterFactory.h
* src/DefaultDiskWriter.cc
* src/DefaultDiskWriter.h
* src/DefaultDiskWriterFactory.cc
* src/DefaultDiskWriterFactory.h
* src/DefaultPieceStorage.cc
* src/DirectDiskAdaptor.cc
* src/DirectDiskAdaptor.h
* src/DiskAdaptor.h
* src/DiskWriter.h
* src/DiskWriterFactory.h
* src/MessageDigestHelper.cc
* src/MultiDiskAdaptor.cc
* src/RequestGroup.cc
* src/UnknownLengthPieceStorage.cc
* src/Util.cc
* test/DefaultDiskWriterTest.cc
* test/DirectDiskAdaptorTest.cc
* test/FallocFileAllocationIteratorTest.cc
* test/MessageDigestHelperTest.cc
* test/MetalinkProcessorTest.cc
* test/MultiDiskAdaptorTest.cc
* test/MultiFileAllocationIteratorTest.cc
* test/SingleFileAllocationIteratorTest.cc
* test/UtilTest.cc
Fixed the bug that read-only file with wrong file size will
cause error because it cannot be truncated to the correct size.
Now if file size is different than the expected one, re-open
file in writable mode.
* src/AbstractSingleDiskAdaptor.cc
* src/AbstractSingleDiskAdaptor.h
* src/BtCheckIntegrityEntry.cc
* src/DiskAdaptor.h
* src/MultiDiskAdaptor.h
* src/RequestGroup.cc
Fixed the bug that with --check-integrity option aria2 reports
downloaded file size is 0 even if some parts of file is
correctly downloaded. This bug is reproducible for the download
that a file includes last piece is missing. This bug doesn't
reveal for single-torrent with file allocation on.
* src/IteratableChecksumValidator.cc
* test/IteratableChecksumValidatorTest.cc
Removed MetalinkProcessorFactory. Since we don't use both
libxml2 and expat simultaneously, MetalinkProcessor is now not
base class and it is directly implemented in
XML2SAXMetalinkProcessor and ExpatMetalinkProcessor.
* src/ExpatMetalinkProcessor.cc
* src/ExpatMetalinkProcessor.h
* src/Makefile.am
* src/MetalinkHelper.cc
* src/MetalinkProcessor.h
* src/MetalinkProcessorFactory.cc: Removed.
* src/MetalinkProcessorFactory.h: Removed
* src/XML2SAXMetalinkProcessor.cc
* src/XML2SAXMetalinkProcessor.h
* test/MetalinkProcessorTest.cc
Use url-list (web-seeding) only for single-file torrent. This
is basically the same behavior with Metalink file with torrent
and URIs.
* src/RequestGroup.cc
* src/DefaultBtContext.cc
* test/DefaultBtContextTest.cc
Fixed the bug that prevents torrent download from finishing.
The bug doesn't reveal for all torrents. The torrents affected
this bug satisfies ((N+7)/8)%4 == 0 and N%32 != 0 where N is the
number of pieces.
* src/bitfield.h
* test/bitfieldTest.cc
Fixed segmentation fault when GZipDecoder::decode() returns 0
byte.
* src/DownloadCommand.cc
* src/bitfield.h
* test/bitfieldTest.cc
Fixed the bug that causes infinite loop if broken web server
returns chunked response without last "0" chunk-size marker and
closes connection.
* src/DownloadCommand.cc
Instantiate properly configured HttpDownloadCommand for
non-resumable downlaods.
* src/HttpResponseCommand.cc
Fixed the bug that upload limit exceeds the value specified in
--seed-ratio option depending on the timing of the execution of
SeedCheckCommand.
* src/SeedCheckCommand.cc
Fixed the bug that removed peer's session upload/download length
are counted twice in _cachedTransferStat before it is
re-calculated. This affected the calculation of shara ratio,
resulting aria2 wrongly determines that specified share ratio is
reached. Also fixed the typo in calculateStatFor function name.
* src/BtSetup.cc
* src/DefaultPeerStorage.cc
* src/ShareRatioSeedCriteria.h
* test/ShareRatioSeedCriteriaTest.cc
BitfieldMan::getMissingIndexes family functions now takes
unsigned char* bitfield instead of stl container for efficiency.
PieceSelector::select now takes this
bitfield. RarestPieceSelector::select now also performs
efficiently for this change. bitfield namespace is introduced
and it has several helper functions to handle basic bitfield
operations such as test, count set bits, etc.
* src/BitfieldMan.cc
* src/BitfieldMan.h
* src/DefaultBtRequestFactory.cc
* src/DefaultPieceStorage.cc
* src/DefaultPieceStorage.h
* src/LongestSequencePieceSelector.cc
* src/LongestSequencePieceSelector.h
* src/Makefile.am
* src/Piece.cc
* src/Piece.h
* src/PieceSelector.h
* src/RarestPieceSelector.cc
* src/RarestPieceSelector.h
* src/Util.cc
* src/Util.h
* src/bitfield.h
* test/BitfieldManTest.cc
* test/LongestSequencePieceSelectorTest.cc
* test/Makefile.am
* test/RarestPieceSelectorTest.cc
* test/UtilTest.cc
* test/bitfieldTest.cc
Run DefaultBtMessageDispatcher::
checkRequestSlotAndDoNecessaryThing()
in every 1 sec. The timeout of RequestSlot is 60s by default and
it doesn't need to be called every time when
DefaultBtInteractive::doInteractionProcessing() is called.
* src/DefaultBtInteractive.cc
* src/DefaultBtInteractive.h
Added 'falloc' parameter for --file-allocation option. 'falloc'
allocation mode uses posix_fallocate() system call to allocate
file on disk. If you are using newer file systems such as ext4
(with extents support), btrfs or xfs, 'falloc' is your best
choice. It allocates large(few GiB) files almost instantly.
Don't use 'falloc' with legacy file systems such as ext3 because
it takes almost same time as 'prealloc' and it blocks aria2
entirely until allocation finishes. 'falloc' may not be
available if your system doesn't have posix_fallocate() system
call.
* configure.ac
* src/AbstractDiskWriter.cc
* src/AbstractDiskWriter.h
* src/AbstractSingleDiskAdaptor.cc
* src/BinaryStream.h
* src/BtCheckIntegrityEntry.cc
* src/ByteArrayDiskWriter.h
* src/CheckIntegrityEntry.cc
* src/CheckIntegrityEntry.h
* src/DefaultPieceStorage.cc
* src/DiskAdaptor.cc
* src/DiskAdaptor.h
* src/DiskWriter.h
* src/FallocFileAllocationIterator.cc
* src/FallocFileAllocationIterator.h
* src/FileAllocationEntry.cc
* src/FileAllocationEntry.h
* src/Makefile.am
* src/MultiFileAllocationIterator.cc
* src/MultiFileAllocationIterator.h
* src/OptionHandlerFactory.cc
* src/RequestGroup.cc
* src/StreamCheckIntegrityEntry.cc
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
* test/FallocFileAllocationIteratorTest.cc
* test/Makefile.am
Replaced std::vector<SharedHandle<PieceStats> _sortedPieceStats
with std::vector<size_t> _sortedPieceStatIndexes to reduce the
cost of std::rotate().
* src/RarestPieceSelector.cc
* src/RarestPieceSelector.h
* test/RarestPieceSelectorTest.cc
Added an option to specify the interval between tracker
requests.
If non-zero value is specified, aria2 uses it and ignores the
interval value in the response of tracker. If zero is specified,
aria2 determines the inteval value based on the tarcker response
and download progress.
* src/DefaultBtAnnounce.cc
* src/DefaultBtAnnounce.h
* src/OptionHandlerFactory.cc
* src/RequestGroup.cc
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
Refactored getMissingIndexRandomly, getFirstMissingIndex,
getAllMissingBlockIndexes to reduce a call to
array_function_base::operator[].
* src/BitfieldMan.cc
Cached TransferStat/download speed to avoid to sum them up in
each call.
* src/DefaultPeerStorage.cc
* src/DefaultPeerStorage.h
* src/SegmentMan.cc
* src/SegmentMan.h
Reduced the number of calls to PeerStorage::calculateStat() and
SegmentMan::calculateDownloadSpeed() to lower CPU usage on
higher transfer rate.
* src/DefaultBtInteractive.cc
* src/DefaultBtMessageDispatcher.cc
* src/DefaultPeerStorage.cc
* src/DefaultPeerStorage.h
* src/DownloadCommand.cc
* src/DownloadEngine.cc
* src/PeerStorage.h
* src/SegmentMan.cc
* src/SegmentMan.h
* test/MockPeerStorage.h
Updated man page: Documented --dry-run and --index-out
options. Changed the default value of --uri-selector and
--http-auth-challenge options. Removed --direct-file-mapping
option. Added example for --index-out
* doc/aria2c.1.txt
Fixed the bug that AdaptiveURISelector doesn't select any URI
when all URIs are tested and their timeout is not reached.
* src/AdaptiveURISelector.cc
* src/AdaptiveURISelector.h
Added --dry-run option. In this mode, aria2 just checks whether
the remote file is available and doesn't download data. This
option has effect on HTTP/FTP downloads and BitTorrent downloads
are canceled in this mode.
* src/FtpNegotiationCommand.cc
* src/HttpResponseCommand.cc
* src/HttpResponseCommand.h
* src/OptionHandlerFactory.cc
* src/RequestGroup.cc
* src/RequestGroupMan.cc
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
Don't reset URI in retry to avoid additional round trips because
of redirects.
* src/AbstractCommand.cc
* src/OptionHandlerFactory.cc
* src/prefs.cc
* src/prefs.h
Added --index-out option to specify each file path for torrent.
Here index shown in --show-files option is used to specify which
file path should be altered. For example, to change the file
path with index=2, use --index-out=2=aria2.tar.bz2. You can use
this option multiple times: --index-out=1=aria2.tar.bz2
--index-out=2=aria2-opt.tar.bz2. The short hand form -O is also
available. This option can be specified in -i list.
* src/DefaultBtContext.cc
* src/DefaultBtContext.h
* src/MultiDiskAdaptor.cc
* src/MultiDiskAdaptor.h
* src/MultiFileAllocationIterator.cc
* src/OptionHandlerFactory.cc
* src/OptionHandlerImpl.h
* src/Util.cc
* src/Util.h
* src/download_helper.cc
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
* test/DefaultBtContextTest.cc
* test/MultiDiskAdaptorTest.cc
* test/MultiFileAllocationIteratorTest.cc
* test/UtilTest.cc
Applied basename function to remove directory element in
content-disposition value.
Return empty string if content-disposition value is ".." or ".".
* src/Util.cc
* test/UtilTest.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
Now select-file can be specified in the uri list(-i list).
* src/BtContext.cc
* src/BtContext.h
* src/RequestGroup.cc
* src/Sequence.h
* src/download_helper.cc
Fixed the bug that disk writer is not created even if it shares
same piece with the preceding file if the length of previous
file is 0.
* src/MultiDiskAdaptor.cc
* test/MultiDiskAdaptorTest.cc
In BitTorrent, Open files in read-only mode for hash check.
After that, re-open file in read/write mode only when the
download is not finished.
* src/AbstractDiskWriter.cc
* src/AbstractDiskWriter.h
* src/AbstractSingleDiskAdaptor.cc
* src/AbstractSingleDiskAdaptor.h
* src/BtCheckIntegrityEntry.cc
* src/DiskAdaptor.h
* src/DiskWriter.h
* src/MultiDiskAdaptor.cc
* src/MultiDiskAdaptor.h
* src/RequestGroup.cc
Added --http-auth-challenge option. If it is set to true(by
default), aria2 sends HTTP authorization header only when it is
requested by the server. If false is set, then authorization
header is always sent to the server. This is useful for servers
that don't respond 401 code when authentication is required.
There is an exception: if username and password are embedded in
URI, authorization header is always sent to the server
regardless of this option.
* src/AuthConfigFactory.cc
* src/HttpSkipResponseCommand.cc
* src/OptionHandlerFactory.cc
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
* test/AuthConfigFactoryTest.cc
* test/HttpRequestTest.cc
Fixed the segmentation fault during execution of choking
algorithm in leecher state because of broken compare operator
implementation.
* src/BtLeecherStateChoke.cc
* src/BtLeecherStateChoke.h
Assign the value of tv.tv_sec to time_t timesec instead of
giving tv.tv_sec to localtime_r directly because tv.tv_sec may
not be of type time_t.
* src/SimpleLogger.cc
Fixed the bug that adding 0 length filter to BitfieldMan filters
1 block. It should not filter anything.
* src/BitfieldMan.cc
* src/ConsoleStatCalc.cc
* test/BitfieldManTest.cc
Don't use Time::parse(buf, "%Y%m%d%H%M%S") because Mac OS X and
included strptime doesn't parse data for this format.
* src/FtpConnection.cc
* test/FtpConnectionTest.cc
Changed the default value of --proxy-method option from 'tunnel'
to 'get'. Use 'tunnel' for HTTPS regardless of --proxy-method
option.
* src/AbstractCommand.cc
* src/AbstractCommand.h
* src/FtpInitiateConnectionCommand.cc
* src/HttpDownloadCommand.cc
* src/HttpInitiateConnectionCommand.cc
* src/HttpInitiateConnectionCommand.h
* src/OptionHandlerFactory.cc
Added OptionParser::parseArg() which internally uses getopt_long
to parse command-line options. All command-line options are now
configured by OptionHandler. No manual editing of struct option*
is required any more.
* src/NameMatchOptionHandler.h
* src/OptionHandler.h
* src/OptionHandlerFactory.cc
* src/OptionHandlerImpl.h
* src/OptionParser.cc
* src/OptionParser.h
* src/array_fun.h
* src/main.cc
* src/option_processing.cc
* test/OptionHandlerTest.cc
* test/OptionParserTest.cc
Fixed compile error when HAVE_EPOLL is not defined.
Fixed linker error on bigendian systems.
* src/SocketCore.cc
* src/SocketCore.h
* test/DefaultBtProgressInfoFileTest.cc
Added --bt-external-ip option. You can specify the external IP
address to report to a BitTorrent tracker. Although this
function is named 'external', it can accept any kind of IP
addresses.
* src/DefaultBtAnnounce.cc
* src/OptionHandlerFactory.cc
* src/option_processing.cc
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
* test/DefaultBtAnnounceTest.cc
Extracted the algorithm to find the longest incremental sequence
as max_sequence template.
* src/LongestSequencePieceSelector.cc
* src/a2algo.h
* test/Makefile.am
* test/a2algoTest.cc
Added _maxTries property to RequestGroup and assign the option
value of PREF_MAX_TRIES to it. AbstractCommand now looks up
RequestGroup::getMaxTries() instead of
Option::getAsInt(PREF_MAX_TRIES).
* src/AbstractCommand.cc
* src/RequestGroup.cc
* src/RequestGroup.h
Applied AdaptiveURISelector-timeout patch from Pascal Rigaux at
Mandriva. I modified the patch: make RequestGroup have the
timeout value and AdaptiveURISelector directly modifies that
value.
* src/AbstractCommand.cc
* src/AdaptiveURISelector.cc
* src/AdaptiveURISelector.h
* src/FtpNegotiationCommand.cc
* src/RequestGroup.cc
* src/RequestGroup.h
Use LongestSequencePieceSelector for HTTP/FTP/BitTorrent
integrated downloads. This PieceSelector subclass finds the
longest continuous sequence in the available missing pieces and
selects the last index of such sequence. This makes HTTP/FTP
connections less interrupted by the pieces obtained by
BitTorrent peers.
* src/DefaultPieceStorage.cc
* src/DefaultPieceStorage.h
* src/LongestSequencePieceSelector.cc
* src/LongestSequencePieceSelector.h
* src/Makefile.am
* src/PieceSelector.h
* src/RarestPieceSelector.h
* src/RequestGroup.cc
* test/BtDependencyTest.cc
* test/DefaultPieceStorageTest.cc
* test/IteratableChecksumValidatorTest.cc
* test/LongestSequencePieceSelectorTest.cc
* test/Makefile.am
* test/SegmentManTest.cc