aria2 Changelog

New in version 1.19.0

May 29th, 2015
  • android: Build and link with zlib
  • Previously, we linked with zlib shipped with NDK, but it seems this is not part of NDK API, and thus could break our app.
  • Allow netrc-path to be specified in the config file
  • Adds --netrc-path to override default .netrc search path. Patch from Ryan Steinmetz
  • Exit with 32 status code if checksum verification failed
  • Add SFTP support using libssh2
  • aria2 can now download files via sftp protocol: aria2c sftp://.... --ssh-host-key-md option is added to specify expected server's fingerprint.
  • Added Dockerfile to cross complile aria2 for RaspberryPI (armhf)
  • Patch from Igor Khomyakov
  • multiple interface support for link aggregation
  • Adds --multiple-interface option. Patch from Sarim Khan
  • Run on-bt-download-complete command when -V reports download finished
  • Use dedicated DiskWriter in MultiDiskFileAllocationIterator
  • We have to use dedicated DiskWriter instead of (*entryItr_)->getDiskWriter(). This is because SingleFileAllocationIterator cannot reopen file if file is closed by OpenedFileCounter.
  • Fix getrandom for system with libc not including errno or systems
  • not supporting ENOSYS in the first place.
  • Don't send back rpc-secret option value in aria2.getGlobalOption RPC method
  • Make libuv default off
  • Fixed slow RPC response
  • Fix getrandom interface detection

New in version 1.18.10 (February 23rd, 2015)

  • Add encoding specifier to Russian man page.
  • Mingw: Use _wgetenv to get user's home directory.
  • Handle linux getrandom returning EINTR on interrupts/signals.
  • Also handle ENOTSUP failures where aria2 was build with linux headers newer than the actual running kernel.

New in version 1.18.9 (February 2nd, 2015)

  • Support HTTP date ending "+0000" as well as "GMT".
  • Revise getRandom facilities
  • Added debug log of all Metalink URLs with final priorities
  • Use gcc-4.9 and android-16 API level for android build
  • Add --bt-force-encryption option
  • TLS: Fix memory leak with OpenSSL
  • Warn about insecure SSL connections.
  • Add --min-tls-version option
  • LibsslTLSContext: Disable SSLv3 and enable ECDHE cipher suites
  • Add Dockerfile.mingw
  • Fix crash when JSON batch response vector is empty
  • Fix doc: Wrong rpc secret token prefix
  • Add --bt-detach-seed-only option
  • mingw: Use MoveFileExW for better atomic move
  • Work around libintl's vprintf macro messing with OutputFile::vprintf
  • Fix crash on OSX when proxy is used
  • Support Adler32 checksum

New in version 1.18.8 (September 12th, 2014)

  • WinTLS: Fix abrupt connection closing and closing in general.
  • Fixes GH-277
  • LibsslTLSSession: Treat 0 from readData as EOF
  • Enable dynamicbase and nxcompat in Windows binaries
  • Fix crash in OpenedFileCounter::ensureMaxOpenFileLimit()
  • The crash happens if PieceStorage and/or DiskAdaptor are not initialized in one of active RequestGroups.
  • mingw32: Fix bug that aria2 does not read piped stdin
  • Fix std::length_error when no_proxy is used
  • This is regression introduced in 8cada497.
  • Try to set sane limits for RLIMIT_NO_FILE
  • E.g. on OSX the default is 256, which isn't exactly compatible with torrent downloads.
  • Delay auth failures instead of PBKDF2

New in version 1.18.5 (March 31st, 2014)

  • Ignore error when setting DSCP value
  • Setting DSCP is additional feature and failure to enable it should not abort download entirely. This change fixes the bug that windows build does not perform bittorrent downloads.

New in version 1.18.4 (March 24th, 2014)

  • Added support for RPC channel encryption in aria2rpc
  • Patch from David Macek
  • Add aria2.saveSession RPC method
  • This method saves the current session to a file specified by --save-session option. This method returns "OK" if it succeeds.
  • Add numStoppedTotal key to aria2.getGlobalStat() RPC method response
  • It shows the number of stopped downloads in the current session and not capped by --max-download-result option. On the other hand, the existing numStopped key also shows the number of stopped downloads, but it is capped by --max-download-result option.
  • Better handling of 30x HTTP status codes
  • Reference: http://greenbytes.de/tech/tc/httpredirects/
  • Implement new RPC authorization using --rpc-secret option
  • Add future deprecation warning to --rpc-user and --rpc-passwd. Warn if neither --rpc-secret nor a combination of --rpc-user/rpc-passwd is set.
  • Add --enable-color option to enable/disable terminal color output
  • Add DSCP support
  • gnutls: Don't fail handshake if returned error is not fatal
  • Add workaround GnuTLS bug with OCSP status extension and non-blocking socket
  • GnuTLS version 3.1.3 - 3.1.18 and 3.2.0 - 3.2.8, inclusive, has this bug. For these versions, we disable OCSP status extension.
  • Make GnuTLS log level dependent on the aria2 ones

New in version 1.18.3 (January 6th, 2014)

  • Fix crash if unpause failed before assigning BtProgressInfoFile object
  • Enable and check PIE in makerelease-osx
  • Fix bug that numOpenFile_ is not reduced when MultiDiskAdaptor is deleted. This bug caused assertion error in RequestGroupMan::ensureMaxOpenFileLimit

New in version 1.18.1 (October 21st, 2013)

  • This version fixes the percent-encoding bug which affects filename encodings.
  • It adds PKCS12 support in certificate importation.
  • It also adds an experimental internal implementation of the message digest functions ARC4 cipher and bignum.
  • This means that no external libraries are required to build BitTorrent support, but this feature is still marked as experimental.
  • This release also fixes the Android build with NDK r9.

New in version 1.18.0 (September 11th, 2013)

  • This version changes the default disk cache size to 16 MiB.
  • To change the default size, a --with-disk-cache configure option was added.
  • Used URIs are now also saved by a --save-session option.
  • The control file is now always saved if --force-save is given.
  • The ctrl-c handling of the Mingw build was improved.
  • The internal intl library is no longer supplied. >From this release onward, a C++11 compiler is required to build the aria2 executable.
  • For gcc, at least 4.6.3 is required.

New in version 1.17.1 (May 27th, 2013)

  • This release adds large file support for Android build and libuv support for event polling mechanism. AppleTLS now supports Snow Leopard (10.6). The experimental libaria2 C++ library API was added.
  • Changes:
  • Add code to detect rst2html.py or rst2html
  • AppleTLS: Properly support Snow Leopard (10.6)
  • Enable multicast loopback in BitTorrent local peer discovery
  • Enable TLS1.1 with gnutls build
  • Support off64_t for Android build
  • Android NDK R8e does not provide ftruncate64, but bionic has the assembler code to access kernel function. We borrowed those ftruncate64.S files from android source code repository. It turns out that x86 asm.h in NDK R8e is also broken, so latest asm.h was also borrowed.
  • Check zlib availability usin AC_CHECK_LIB. This is workaround for zlib 1.2.3 which does not come with pkg-config file.
  • Treat response is completed if EOF is received before streamFilter completes. This fixes the error with web server which has buggy chunked encoding.
  • uitos: Fix off-by-one error bug
  • Add configure support for linking tcmalloc_minimal and/or jemalloc
  • Both tcmalloc_minimal and jemalloc outperform the native malloc implemention on Windows (MSVCRT) in terms of committed memory consumption (~-30%) and performance (e.g. far less page faults, ~-60%), depending, of course, on the actual workload. The longer the download queue, the bigger the impact ;)
  • On *nix the picture is a little different... tcmalloc usually still outperforms the native malloc implementation, but not that significantly than on Windows. jemalloc however is only marginally better than recent native Linux implementations, while it is already used by some BSD as the native allocator.
  • tcmalloc is part of gperftools and very mature and tested by now. It doesn't work on OSX in the default configuration, however.
  • jemalloc is the default allocator at least on FreeBSD and NetBSD and used in Firefox. http://www.canonware.com/jemalloc/index.html
  • Close GZipFiles in the d'tor
  • Add libaria2, C++ library interface to aria2
  • Add missing check for sigaction
  • Fix cached data is not flushed when downloaded data is less than 16KiB
  • LibUV: Implement LibuvEventPoll

New in version 1.17.0 (April 22nd, 2013)

  • This version adds Mac OS X native SSL/TLS library support.
  • The IPv6 asynchronous DNS is enabled by default, and A/AAAA lookups are done in parallel.
  • The simple Happy Eyeballs algorithm has been implemented to mitigate long timeouts when connecting to IPv6 hosts on dual-stack hosts.
  • The --save-session option only saves the options specified by the commandline or RPC.

New in version 1.16.5 (March 25th, 2013)

  • This version fixes the bug which caused an invalid range error to be thrown when requesting range starts from 0 in HTTP downloads.

New in version 1.16.4 (March 18th, 2013)

  • This version fixes the bug where active downloads were not saved with --save-session-interval and the bug where aria2 hangs when the size of the download result exceeds its maximum.
  • BitTorrent UDP tracker support was added.
  • If the filename specified using --save-session ends with ".gz", aria2 stores the session file in gzipped form.
  • The -i option can handle this gzipped file as well as plain text files.
  • A 1.15.2 based Portuguese translated manual was added.

New in version 1.16.3 (February 4th, 2013)

  • This version fixes a bug that caused random crashes.
  • It also fixes socket option setting failure on Windows.

New in version 1.16.1 (December 27th, 2012)

  • This version adds the ability to persist the GID across sessions.
  • The GID will be saved with --save-session.
  • There are several restrictions on how the GID is persisted. For this change, the GID is now 64-bit binary data and represented by a 16 character hex string in an RPC query.
  • The disk cache feature was added, which may reduce disk activity.
  • The console readout was redesigne

New in version 1.16.0 (December 3rd, 2012)

  • This version adds SSL/TLS encryption support in RPC transport.
  • The new RPC method aria2.appendUri has been added (it's a wrapper to aria2.changeUri).
  • The Content-Disposition parser is now RFC 6266-conformant.
  • The resource leak in XmlParser, JSON, and Bencode parser has been fixed.
  • The uploaded data size calculation bug has been fixed.
  • For the MinGW32 build, files are now opened with read/write shared mode.

New in version 1.15.1 (May 28th, 2012)

  • This version fixes the bug that prevented --bt-lpd-interface from working.
  • If some options sent by RPC request are not acceptable for the download type, they are now simply ignored instead of rejecting the RPC request entirely.
  • The aria2 RPC server now returns an 4XX error code if the request is not valid in the HTTP level.
  • To improve packaging, a --with-bashcompletiondir configure option was added.
  • This option overrides where the aria2c bash_completion file is going to be installed.
  • All manual pages are now generated by Sphinx

New in version 1.14.1 (January 12th, 2012)

  • This version fixes the bug that prevents the --checksum option from working correctly.
  • It also fixes the bug where a log file was not created if a warn level log was created before the log file was opened.
  • Now aria2 doesn't assume the download has completed just because file size matched.
  • The old behavior is problematic, because aria2 just assumes the download is completed, but in reality it is not.

New in version 1.14.0 (December 26th, 2011)

  • This version adds many available options to aria2.changeOption and aria2.changeGlobalOption RPC methods.
  • IPv6 literal address is now supported in the proxy options.
  • The --metalink-server option is now deprecated, and the --split option should be used instead.
  • In this release, --metalink-server is an alias of --split.
  • The format ETA in console readout is changed slightly.
  • The option --stop-with-process has been added.

New in version 1.13.0 (October 10th, 2011)

  • This version fixes a libgcrypt version checking error.
  • Several commandline options have been added.
  • aria2 now returns an error response if an RPC request parameter has the wrong type.
  • For the MinGW32 build, Unicode filename support has been added.
  • aria2 now uses libnettle and libgmp by default instead of libgcrypt.
  • If you want to use libgcrypt, use the configure options --without-libnettle and --with-libgcrypt.

New in version 1.12.1 (August 2nd, 2011)

  • This release adds RFC 6249 Metalink/HTTP support. Current implementation only uses rel=duplicate links. --enable-direct-io option was deprecated because of performance issue. Since recent GnuTLS uses libnettle as default instead of libgcrypt, this release added initialization code for libgcrypt.

New in version 1.11.1 (March 31st, 2011)

  • This version fixes the bug that aria2 does not work on platforms that have the kqueue() system call due to invalid timeout parameter.
  • The --show-console-readout option was added. This option toggles the appearance of console readout.

New in version 1.10.8 (December 19th, 2010)

  • This release fixes the compile error which occurs with --disable-nls
  • configure option. It also fixes the compile error which occurs when
  • the system does not have fallocate() but has posix_fallocate().

New in version 1.10.7 (December 6th, 2010)

  • This version fixes the bug that causes a memory leak when parsing Metalink document if aria2 is built with expat.
  • It also adds several exit status codes to help identify the cause of an error.
  • The --max-connection-per-server option now works with Metalink.
  • aria2 now passes the number of files and file path in addition to the GID to commands specified in the --on-download-* options.
  • The MinGW32 build now encodes non-ASCII characters in a file path using percent-encoding.
  • A bash_completion file for aria2c is now included in the distribution.

New in version 1.10.5 (October 20th, 2010)

  • This version fixes the bug in which file allocation is enabled in HTTP even if --file-allocation=none is specified.

New in version 1.9.5 (June 28th, 2010)

  • Don't set previousUri_ to "" on redirect.
  • Fixed Peer::updateSeeder() to reflect current bitfield.
  • Made log and log-level option modifiable using aria2.changeGlobalOption. This means you can dynamically start or stop logging and change log file and log level.
  • Fixed that bug that when aria2 is stopped before whole hash check(not piece hash check) is done, aria2 reports its file is downloaded successfully. It should report the download is in-progress and next invocation of aria2 should check hash.
  • Fixed the bug that corrups file if segment returned from SegmetnMan::getCleanSegmentIfOwnerIsIdle() has writtenLength > 0.
  • Fixed assertion error if updateTransferStatFor is called with peer X before calculateStat() after peer X is added.

New in version 1.9.0 (March 13th, 2010)

  • Resurrected --http-proxy-user and --http-proxy-passwd option. Added --https-proxy-user, --https-proxy-passwd, --ftp-proxy-user, --ftp-proxy-passwd, --all-proxy-user, --all-proxy-passwd option.
  • Updated Russian and Simplified Chinese translation.
  • Added --reuse-uri option. This option has existed quite long, but been hidden.
  • Fixed the bug that filename is percent encoded where it must be percent decoded in sendMdtm().
  • Added getServers XML-RPC method. It returns currently connected HTTP(S)/FTP server and download speed, etc.
  • Added 'status' key to the response of getUri XML-RPC method.
  • Added changeUri XML-RPC method. This method removes/adds URIs dynamically.
  • Replaced null or control characters in file path with '_'. For MinGW32 build, additional characters which is not allowed in Windows kernel are also replaced. util::detectDirTraversal() now returns true if given string contains null or control characters.
  • Discard torrent file if path data in it contains directory traversal directives. Discard metalink:file element in Metalink3 format if its name attribute contains directory traversal directives. Ignore name attribute of metalink:signature element in Metalink3 format if it contains directory traversal directives.
  • Added Metalink4 support. Files with same metaurl are grouped and downloaded in one RequestGroup.
  • Added --bt-lpd-interface option to specify the interface to use for Local Peer Discovery. LpdMessageDispatcher object now has its own socket. LpdMessageReceiver's socket is binded to multicast address to only receive multicast packets.
  • Added Local Peer Discovery. It is disabled by default. Use --bt-enable-lpd to enable the function.

New in version 1.6.1 (October 7th, 2009)

  • This release fixes a memory leak in HTTP/FTP downloading.
  • It also fixes a bug where the option values changed by XML-RPC changeOption and changeGlobalOption methods are cleared.
  • Now User-agent and Peer ID include version numbers.
  • Simplified Chinese translations have been updated.

New in version 1.6.0 (September 21st, 2009)

  • This release changes the default behavior of XML-RPC server.
  • Now it listens only on the local loopback interface by default for security reasons.
  • If you want to connect to aria2c from remote hosts, use the --xml-rpc-listen-all option.
  • The XML-RPC client sample scripts written in Ruby are now included in the archive under the doc/xmlrpc directory.
  • The help category tags are now start "#" to distinguish them from keyword search.
  • The --retry-wait option was removed because it doesn't work properly under the architecture.
  • The Bulgarian, Russian, Slovak, and Japanese translations have been updated.

New in version 1.5.0 (July 19th, 2009)

  • This release adds WEB-Seeding support for multi-file torrent. --bt-stop-timeout option was added. This function stops BitTorrent download if the download speed is 0 in consecutive given seconds. aria2 now tries all resolved addresses to connect to remote servers in HTTP(S)/FTP until it gets connected. For XML-RPC, two new methods were added: aria2.tellWaiting and aria2.getVersion. The error code is available in the response of aria2.tellStatus methods for stopped/completed downloads. --use-head is now disabled by default since using HEAD request causes problems in some web sites. The behavior of -D option has been changed: If -D is specified, the current working directory is set to / and stdin, stdout and stderr are redirected to /dev/null. This release fixes the bug that zombie processes are created when commands specified in --on-download-* options are executed and the bug that http-user, http-passwd, ftp-user and ftp-passwd are ignored when they are given via XML-RPC. Updated Russian, Italian, Danish, Bulgarian, Japanese and Ukrainian translations.

New in version 1.4.1 (June 8th, 2009)

  • Documented missing seeder in getPeers xml-rpc method.
  • Added uploadLength and numSeeders to the response of tellStatus xml-rpc method.
  • Added missing #ifdef ENABLE_ASYNC_DNS guard.
  • Added fork() emulation using CreateProcess() in MinGW

New in version 1.4.0 (May 31st, 2009)

  • Added Slovak translation. Updated Ukrainian and Brazilian Portuguese translation. Thanks to all translators.
  • Use name.utf-8 and path.utf-8 key in higher priority than name and path key respectively when persing .torrent file.
  • Added --xml-rpc-max-request-size option to limit the size of XML-RPC request.
  • Since upcoming libgnutls 2.8 doesn't have libgnutls-config, Check presence of libgnutls using pkg-config first. If it fails, fall back to old macro libgnutls.m4.
  • Added --save-cookies option.
  • Added the ability to execute command when download starts and stops. You can also specify command for particular cases such as complete/error download. Added --on-download-start, --on-download-stop, --on-download-complete and --on-download-error option.
  • Abbreviated KiB/s to KiBs and its precision decreased to 1 to save space in console readout. Also they are now shown in MiB/s if speed > 1024KiB/s.
  • Added SEED to console output, which represents the number of seeders currently the client is connecting to.
  • Added source filename(__FILE__) and line number(__LINE__) to exception message.
  • Fixed the bug that POU peers are never choked in seeding.
  • 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.
  • Added BASIC authentication for XML-RPC. Added --xml-rpc-user and --xml-rpc-passwd option.
  • Added XML-RPC interface. See complete API specification at http://apps.sourceforge.net/trac/aria2/wiki/XmlrpcInterface
  • Removed --enable-http-server and --http-server-listen-port options. Added --enable-xml-rpc and --xml-rpc-listen-port instead. The original feature for --enable-http-server that reports download progress in HTML was officially removed. Persist XML-RPC connection if client supports keep-alive.
  • Added more options that can be specified in -i list and xml-rpc add* command. See Input File in aria2c man page.

New in version 1.3.3 (May 8th, 2009)

  • Updated Ukrainian, Russian and Simplified Chinese translations. Thanks to all translators.
  • 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.
  • Supported segmented downloading with chunked transfer encoding and content-length.
  • Applied Pascal Bleser's patch: increases MAX_RECV_BUFFER for ftp from 4096 to 65536 (for insanely large ftp login banners)
  • 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.
  • 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.

New in version 1.3.2 (April 28th, 2009)

  • Updated Ukrainian translation.
  • Use url-list (web-seeding) only for single-file torrent. This is basically the same behavior with Metalink file with torrent and URIs.
  • 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 N2 != 0 where N is the number of pieces.
  • Fixed segmentation fault when GZipDecoder::decode() returns 0 byte.
  • Fixed the bug that causes infinite loop if broken web server returns chunked response without last "0" chunk-size marker and closes connection.
  • Instantiate properly configured HttpDownloadCommand for non-resumable downloads.
  • Rewritten bitfield operation functions for efficiently.
  • Set conditional HAVE_GETADDRINFO true for mingw32. It was accidentally set to false in r1162.
  • Increase prefixLength for the bucket which doesn't own local node ID when splitting bucket.

New in version 1.3.1 (April 12th, 2009)

  • Fixed the bug that upload limit exceeds the value specified in --seed-ratio option depending on the timing of the execution of SeedCheckCommand.
  • 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.

New in version 1.3.0 (April 1st, 2009)

  • 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.
  • Added --bt-tracker-interval 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.
  • Reduced CPU usage in RarestPieceSelector.
  • Reduced CPU usage when hitting download limit/upload limit.
  • Changed the default value of --uri-selector option from 'inorder' to 'feedback'
  • Included current URI in exception message.
  • Fixed the bug that AdaptiveURISelector doesn't select any URI when all URIs are tested and their timeout is not reached.
  • Reuse URIs when all unused URIs run out.
  • Removed --direct-file-mapping option and CopyDiskAdaptor.
  • 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.
  • Parse options in -i list using OptionParser.
  • Don't reset URI in retry to avoid additional round trips because of redirects.
  • Added --index-out option to specify each file path for torrent. The 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.
  • 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.
  • Now select-file can be specified in the uri list(-i list).
  • Made the upper value of --max-concurrent-downloads options unlimited.
  • 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.
  • 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.
  • Added --http-auth-challenge option. If it is set to true, 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. The default value of this option is false.

New in version 1.3.0 Beta Build 20090322 (March 21st, 2009)

  • Added --bt-tracker-interval 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.
  • Reduced CPU usage in RarestPieceSelector.
  • Reduced CPU usage when hitting download limit/upload limit.
  • Changed the default value of --uri-selector option from 'inorder' to 'feedback'
  • Included current URI in exception message.
  • Fixed the bug that AdaptiveURISelector doesn't select any URI when all URIs are tested and their timeout is not reached.
  • Reuse URIs when all unused URIs run out.
  • Removed --direct-file-mapping option and CopyDiskAdaptor.
  • 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.
  • Parse options in -i list using OptionParser.
  • Don't reset URI in retry to avoid additional round trips because of redirects.
  • 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.
  • 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.
  • Now select-file can be specified in the uri list(-i list).
  • Made the upper value of --max-concurrent-downloads options unlimited.
  • 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.
  • 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.
  • Added --http-auth-challenge option. If it is set to true, 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. The default value of this option is false.

New in version 1.3.0 Beta Build 20090314 (March 13th, 2009)

  • Changed the default value of --uri-selector option from 'inorder' to 'feedback'
  • Included current URI in exception message.
  • Fixed the bug that AdaptiveURISelector doesn't select any URI when all URIs are tested and their timeout is not reached.
  • Reuse URIs when all unused URIs run out.
  • Removed --direct-file-mapping option and CopyDiskAdaptor.
  • 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.
  • Parse options in -i list using OptionParser.
  • Don't reset URI in retry to avoid additional round trips because of redirects.
  • 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.
  • 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.
  • Now select-file can be specified in the uri list(-i list).
  • Made the upper value of --max-concurrent-downloads options unlimited.
  • 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.
  • 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.
  • Added --http-auth-challenge option. If it is set to true, 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. The default value of this option is false.

New in version 1.2.0 Beta 20090214 (February 13th, 2009)

  • Fixed the segmentation fault during execution of choking algorithm in leecher state because of broken compare operator implementation.
  • Open file in binary mode. This fixes the bug that local torrent file doesn't work on win32.
  • Added a check to see struct sockaddr_in has sin_len member. Set struct sockaddr_in.sin_len if HAVE_SOCKADDR_IN_SIN_LEN is defined.
  • Fixed possible buffer overrun when writing dht.dat.
  • Fix epoll error on the old kernel 2.6.8 or ealier.
  • Fixed the bug that adding 0 length filter to BitfieldMan filters 1 block. It should not filter anything.
  • Fixed broken selected file BitTorrent download.
  • Changed the default value of --proxy-method option from 'tunnel' to 'get'. Use 'tunnel' for HTTPS regardless of --proxy-method option.
  • 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.
  • 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.
  • 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.
  • Fixed the bug that the average speed is wrong in http/ftp/BitTorrent integrated download. Only the download bytes in BitTorrent were considered.
  • Choose port for BitTorrent/DHT randomly from the specified range. REQUEST#2543518
  • Send HTTP Authorization header only if it is requested by the server(response 401). There are some exceptions. The authorization header for proxy is always sent if it is available without request by the server. If username/password is specified in the URI, it is immediately sent to the server without request by the server. Implements REQUEST#2540844.
  • Remove leading "--" from help keyword and a substring after "=" from help keyword, so that one can query options by '-h--max-' or '-hmax-peers=10'.
  • Added experimental built-in HTTP server. Currently, when a client accesses to the server, it responds with the current download progress. By default, it is disabled. To enable the server, give --enable-http-server option. To change the default port number for the server to listen to, use --http-server-listen-port option. The response HTML is very simple and refreshes it self each 1 second. Because of this refresh, you see flicker in normal web browser such as Firefox. I recommend to use console-based browser such as elinks, w3m. To connect to the server, run 'elinks http://localhost:6800/' while running aria2. Please replace port number '6800'(which is default) with your preference.
  • Made (piece) hash check sequential for each RequestGroup because simultaneous hash check is slower than sequential execution.
  • Added --bt-max-peers option to specify the maximum number of peers per torrent. 0 means unlimited number of peers. REQUEST#2451382
  • Added --bt-hash-check-seed option. If true is given to this option, after hash check using --check-integrity option and file is complete, continue to seed file. If you want to check file and download it only when it is damaged or incomplete, set this option to false. This option has effect only on BitTorrent download. The default value is true(This is the same behavior with the previous release).
  • Made the max value of split option unlimited. REQUEST#2496748
  • Added --event-poll option to select the method for polling events. The available methods are "select" and "epoll". "epoll" is available on Linux only. The earlier release has the compile option to choose from these methods.
  • Included RecoverableException.h from main.cc. BUG#2498160
  • 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.
  • Applied AdaptiveURISelector patch from Aurelien Lefebvre. This patch adds AdaptiveURISelector, which selects one of the bests mirrors for first and reserved connections. For supplementary ones, it returns mirrors which has not been tested yet, and if each of them already tested, returns mirrors which has to be tested again. Otherwise, it doesn't return anymore mirrors.
  • Fixed unit test error in HTTPResponseTest. PATCH#2485509

New in version 1.1.2 (December 29th, 2008)

  • Updated Russian translation. Thanks to the translators.
  • Added --use-head option to toggle whether HEAD method should be used in the first HTTP request. By default aria2 uses HEAD method as the first request. If the server doesn't recognize HEAD, then give aria2 --use-head=false to force aria2 to use GET method instead.
  • Fixed the bug that BitTorrent download doesn't finish when REJECT message is received before CHOKE message. The old implementation doesn't clear the use-bit of the piece when recieved REJECT message.

New in version 1.1.0 (December 23rd, 2008)

  • Print the contents of torrent/metalink files without -T/-M options.
  • Updated French, Japanese, Russian and Ukrainian translations. Thanks to all translators.
  • Rename file by appending digits if a local file exists and its file size is larger than that of remote file with --continue option. The old implementation just throws exception in such case.
  • Fixed the bug that download progress summary is not printed in the interval specified by the option.
  • Fixed the cookie implementation based on RFC2965. Now if a value in domain field is not started with dot, then prepend dot. That means a cookie with domain=sf.net is sent to wiki.sf.net.
  • Fixed the bug that causes corrupted downloads if HTTP pipelining is enabled and the server doesn't support keep-alive.
  • Added --max-overall-upload-limit option. This option limits the overall upload speed. Stated in help message that the existing --max-upload-limit option limits the upload speed per each torrent. Man page is also updated.
  • Fixed the bug that bad URI is sent to the tracker when the announe URI in torrent file includes query.
  • Enabled --check-certificate by default. Added compile time(configure) option --with-ca-bundle to specify CA bundle. Warn if --check-certificate=true and --ca-certificate is not specified or loading CA certificate is failed.
  • Added "https" tag to help option category. Added https tag to --ca-certificate, --certificate, --check-certificate and --private-key option.
  • Changed the package name from "aria2c" to "aria2". The name of the executable is not changed. This change was done in order to fix the inconsistency of the package name and the install directory since in many distributions the binary package name is "aria2", but the old releases tried to install to "aria2c" directory such as "/usr/local/share/doc/aria2c".
  • Fixed typos in man page.
  • RFC3986 complied Percent-Encoding(urlencode). Use uppercase hexadecimal digits for encoded text instead of lowercase ones.
  • Fixed the bug that -pfalse and -ptrue are not recognized properly.
  • Fixed the bug that prevents aria2 from downloading 0-length files via HTTP/FTP.

New in version 1.0.1 (November 24th, 2008)

  • Fixed typo in "OPTIONS THAT TAKE AN OPTIONAL ARGUMENT" section.
  • Applied aria2-1.0.0-mingw-r5.patch to fix numerous compile/unit test errors in MinGW: Closed file after saving server stats (RequestGroupMan.cc) Fixed time parsing if internal strptime() is missing (FtpConnection.cc) Ignored case & handled 2-digit years (strptime.c) Added missing suseconds_t definition (a2time.h) Fixed socket CLOSE() define (SocketCore.cc) Changed EINPROGRESS to A2_EINPROGRESS (SocketCore.cc) Changed utime() test values from x000 to x00000 as MinGW failed on values less than timezone offset from Unix epoch Changed 'struct stat' to 'a2_struct_stat' (FileTest.cc) Added waitRead() call prior to reading socket (FtpConnectionTest.cc) Changed date from 01-Jan-1960 to 01-Jan-1970 00:00:01 as MinGW can't handle negative dates (CookieParserTest.cc)
  • Fixed the bug that causes floating exception when -T option is used and no URIs are given.
  • Use HEAD method to get file size from HTTP server for segmented downloading. The request to the BitTorrent Tracker always uses GET method because the response of the tracker is small and it doesn't need segmented download.
  • Closed files after the test cases in MultiDiskWriterTest:: testResetDiskWriterEntries(). This will fix the unit test error in mingw32 build.
  • Don't show download result when -S option is used.
  • Updated Ukrainian and Norwegian Nynorsk translations.

New in version 1.0.0 (November 19th, 2008)

  • This release adds the ability to verify peers using given trusted CA certificates and client certificate authentication in HTTPS.
  • The ability to form a persistent connection using a proxy and support for well-known environment variables for proxy settings were also added.
  • The bug that caused a segmentation fault during seeding was fixed.
  • Now users can specify output the filename and directory in the input file.
  • The average download speed are now printed in Download results.
  • The following options are now enabled by default: --ftp-pasv and --enable-direct-io.

New in version 0.16.2 (October 19th, 2008)

  • Fixed the bug that aria2 aborts when a request larger than 16KiB is recieved. In this fix, if a request larger than 16KiB length is received, aria2 disconnects the peer.
  • Added length equality test to operator== to drop a piece message whose length does not match to the requested one.
  • Added Serbian translation. Updated Ukrainian translation. Thanks to all translators.

New in version 0.16.1 (October 14th, 2008)

  • Changed the type of _numNewConnection to unsigned int. BUG#2150491, PATCH#2151628
  • Fixed compile error with gcc-4.4(snapshot). The patch is submitted by David Watzke. BUG#2150058
  • Added missing m4 macros. - m4/cppunit.m4 - m4/libgcrypt.m4 - m4/libgnutls-extra.m4 - m4/libgnutls.m4 - m4/libxml2.m4
  • Fixed the bug that referer header field contains fragment. Now Request class removes fragment part of URI and encodes it in Request::setUri() and setReferer().
  • Fixed the bug that last character in URI is not encoded.
  • Added --dht-file-path option to change the path to dht.dat, which is a serialized DHT routing table.
  • Fixed the bug that unit test fails on linux-amd64
  • Fixed compile warning on linux-amd64
  • Added --auto-save-interval=SEC option. A control file(*.aria2) is saved every SEC seconds.
  • Updated man page. Changed doctype of aria2c.1.html to manpage in order not to replace '--' with em dash character.
  • Added Ukrainian, Vietnamese and Traditional Chinese translations. Updated French, Simplified Chinese and Japanese translations. Thanks to all translators. en@quot and en@boldquot are also added.

New in version 0.16.0 (October 6th, 2008)

  • Added deliminating text to the beginning of the log so that one can find where the log starts easily.
  • Use non-blocking socket for TCP communication to avoid possible blocking due to buffer full.
  • Added --max-file-not-found=NUM option. If aria2 receives `file not found' error from HTTP/FTP server NUM times without getting single bytes of data, then force the download to fail.
  • Use pkg-config for sqlite3, openssl.
  • Added --connect-timeout option to specify connect timeout in seconds. This option is in effect for HTTP/FTP/proxy server. The timeout for connecting to BitTorrent peer is not controlled by this option.
  • Implemented the ability to get timestamp from remote HTTP/FTP server and apply it to local file. To enable this feature, --remote-time option.
  • If an error occurred with a URI, remove identical URI from remaining URI list because it is likely that same error occurred in the end and it is waste of time.
  • Contact tracker frequently when the number of connections are 0 and download is not finished yet.
  • Rewritten Cookie handling routine.
  • Bump up version number of dht.dat file to 3. In version 3 format, time is stored in 64bit, network byte order. New build can load old format(version 2) but it saves the file in new format. It means once you used new build, your dht.dat becomes incompatible with older build.
  • Bump up version number of .aria2 control file to 0001. New aria2 can still load version 0000 file but it saves the file in version 0001 format. It means that new aria2 can resume download started by old aria2 but the opposite is not true.
  • Added Firefox3 cookie support based on the patch submitted by tizianomueller. Firefox3 cookie is SQLite3 database. libsqlite3 is required to enable this functionality.
  • 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. Added options to load/save above information(download speed, status etc.) to a file: --server-stat-of, --server-stat-if. --server-stat-timeout is also added to control the life span of the saved data.
  • Integrated HelpItem into OptionParser to ease the workload for adding new options. Removed default value from usage text.
  • Issue PWD command first and get working directory and use it as a prefix for CWD command.
  • netrc are used for HTTP.
  • FTP user/password is sent in Authorization header when --ftp-via-http-proxy=get is given(non-transparent HTTP proxy).
  • Insert username+'@' to URI(after ftp://) when URI is FTP scheme and username is not in URI and non-transparent HTTP proxy is used.
  • Fixed the bug that prefixLength of split bucket which doesn't include local node ID is incremented.
  • Updated man page.

New in version 0.15.3 (September 5th, 2008)

  • Fixed chunk checksum validation cannot detect trailing garbage data. BUG#2074141
  • Made files whose name ends with ".gz", ".tgz" not inflated by Content Encoding Decoder.
  • Fixed infinite loop bug in FTP when SIZE command failed.
  • Contact tracker frequently when the number of connections are 0 and download is not finished yet.
  • Added -lrt to LIBCARES_LIBS if -lrt is needed to link program with -lcares.
  • If an error occurred with a URI, remove identical URI from remaining URI list.
  • Added Turkish translation
  • Updated German and Russian translations.