aria2 Changelog

What's new in aria2 1.35.0

Oct 8, 2019
  • Changes:
  • Update mingw build dependencies
  • Update android build dependencies
  • Update android build dependencies. Use android NDK r20 and build aarch64 binary.
  • Drop SSLv3.0 and TLSv1.0 and add TLSv1.3
  • TLSv1.3 support is added for GNUTLS and OpenSSL.
  • Platform: Fix compilation without deprecated OpenSSL APIs
  • Patch from Rosen Penev
  • Remove linux getrandom and use C++ stdlib instead
  • Don't send Accept Metalink header if Metalink is disabled
  • gnutls: Fix bug that commonName is always empty
  • Fix openssl API version logic for libressl 2.7.x
  • Patch from Ben Chaney
  • Fix build failure when InternalDHKeyExchange is used

New in aria2 1.32.0 (Jun 15, 2017)

  • Fixes:
  • Clarify --max-concurrent-downloads option
  • Fix compile error with toolchain which lacks IPV6_TCLASS
  • Log directed URI in notice log level
  • Fix typo
  • Patch from Tse Kit Yam
  • Spelling fixes
  • Remove unused Android parts
  • These parts where unused after merging
  • Save control file early
  • Update links in Dockerfile.raspberrypi. Some links used in Dockerfile.raspberrypi are not accessible anymore, because they were pointing to old versions of some source packages and new versions were released. This commit fixes this by changing the links to point to the newest versions.
  • Propagate disk full error on pre-allocation to last error code

New in aria2 1.30.0 (Dec 16, 2016)

  • Changes:
  • mingw: Use sqlite 3.15.2
  • Fix bug that --disable-websocket causes build error
  • Fix bug that lower bound of optimize-concurrent-downloads becomes 1
  • Print DHT nodes with -S option
  • Take into account address family when resolving DHT node address
  • Allow block device file to -i option
  • Expand ${HOME} to user's home directory in several options
  • Document that libaria2 is not thread safe
  • configure: Use pkg-config to find libs whenever possible

New in aria2 1.27.1 (Oct 17, 2016)

  • This release fixes the packaging bug that libssl_compat.h is missing in the tar balls.
  • Changes:
  • Add missing libssl_compat.h to SRCS.

New in aria2 1.26.1 (Aug 29, 2016)

  • This release fixes the bug that causes assertion failure during BitTorrent downloads.

New in aria2 1.26.00 (Aug 21, 2016)

  • aria2mon: Replace client.call with local method
  • Patch from Florian Gamböck
  • Reorder a note section in aria2c.rst
  • Patch from Artur Petrov
  • Closes GH-722
  • bash_completion: Add missing options which takes one of pre-defined values
  • Replace "/" with "-" in magnet dn name when used as in-memory download name
  • Fix Dockerfile.raspberrypi to correctly decompress expat archive
  • Patch from Char
  • Enable ccache in travis-ci
  • Speeds up the build most of the time.
  • Closes GH-710
  • Enable OSX/macOS build for travis
  • Closes GH-711
  • Closes GH-666
  • Better auto-renaming
  • Up until now aria2 file auto renaming worked by just appending a new unique number to the file path, behind the file name extension, if any, changing what most other programs consider the file extension
  • in the process. Now, aria2 will attempt to insert the number before the file extension, leaving the extension intact, so that e.g. a ".jpg" still is a ".jpg" file and opens in your configured image
  • viewer when clicking it. If a file has no extension (incl. so called "dot files"), the number will be appended to the file name as usual.
  • Note: This is a potentially breaking change that might break third party scripts that rely on aria2 auto file renaming producing a certain format for renamed files. Please fix your scripts accordingly.
  • Closes GH-709
  • Log number of items loaded from input file
  • Link external libraries to libaria2 with --enable-libaria2
  • Fixes GH-707
  • Allow seconds for seed-time (fractional minutes)
  • Patch from Sébastien Cabaniols
  • Closes

New in aria2 1.25.00 (Jul 17, 2016)

  • Changes:
  • Update third-party libraries for binary releases
  • Send have message without too much delay
  • Also send bitfield rather than have messages if bitfield message is equal to or less than the sum of have messages which otherwise would be sent.
  • Fix bug that causes bogus EOF connection failure in BitTorrent downloads
  • Fix frequent interested/not interested message transmission
  • Fix frequent choke/unchoke message transmission
  • Try to use available URI if all pooled requests are sleeping
  • Update expat in OS X build
  • aria2mon: Add --secret option
  • Set server status error on network failure in server performance profile
  • Disable AI_ADDRCONFIG if no IPv4/IPv6 address is configured for any interface
  • Russian manual: Update aria2c.rst
  • Apply --retry-wait on 503 only
  • Ensure that lowest speed check is done even when download speed is 0
  • Document that -o is always relative to -d option
  • Allow larger ut_metadata size
  • mingw: Change FD_SETSIZE to 32768
  • Fix compile error on OS X

New in aria2 1.19.00 (May 25, 2015)

  • This releases adds SFTP support, and fixes several bugs. SFTP support has been implemented using libssh2. We added several new options. --multiple-interface option is like --interface option, but can take several interfaces. They are used in round-robin manner, and it works like link aggregation. Previously, .netrc search path is fixed under $HOME directory, and cannot be changed. In this release, --netrc-path option has been added to override the search path. The runtime bug concerning getrandom has been fixed in this release. Previously if download failed because checksum error, aria2 exited with error code 1 (unknown error). Now it exits with dedicated error code 32. We fixed long outstanding bug that aria2 crashes when downloading multi-file torrent.

New in aria2 1.18.10 (Mar 27, 2015)

  • Changes:
  • Add encoding specifier to Russian man page
  • Fixes GH-341
  • Mingw: Use _wgetenv to get user's home directory
  • Fixes GH-342
  • 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.
  • Fixes GH-336

New in aria2 1.18.9 (Feb 2, 2015)

  • This releases fixes memory leak with OpenSSL and crash on OS X when proxy is used. We added several new features. Adler32 checksum is now available in --checksum option and hash element in Metalink files. We added --bt-detach-seed-only option, which excludes seed-only downloads when counting concurrent active downloads (-j option). We disabled SSLv3 by default. If you ever want to enable it or further tune the TLS protocols to enable, use new --min-tls-version option. --bt-force-encryption option was added to make requiring BitTorrent full encryption easier. From this release, we build Android binary using API level 16.
  • Changes: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 OS X when proxy is used
Support Adler32 checksum

New in aria2 1.18.8 (Sep 12, 2014)

  • This releases fixes the bug that aria2 cannot read piped stdin on mingw32. It also fixes busy loop on mingw32 when SSL/TLS is used. We also fixed 2 crashes which can occur on all platforms.
  • Changes:
  • WinTLS: Fix abrupt connection closing and closing in general.
  • 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.
  • 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 aria2 1.18.7 (Jul 23, 2014)

  • This release fixes regression which makes 100% CPU utilization in multi-file torrent download with -V option. It also fixes build error on big endian platforms.
  • Changes:
  • Fixed segfault unsupported encodings
  • Patch from diadistis
  • Fix regression 100% CPU utility when -V is used and download is multi-file bittorrent downloads
  • Fix compile error on big endian platform

New in aria2 1.18.6 (Jul 14, 2014)

  • Disard cache when checking checksum: This will slow down checksum checking but does not thrash cache.
  • Compat with libuv 0.11 (Unstable): Fixes #241
  • Drop WinMessageDigestImpl: The algorithms the CryptProv on Windows supports does not currently include SHA-224, so there is a "dark spot" in this implementation. Also on Win XP < SP3, most of the SHA-2 family is not actually supported. All other implementation provide support for MD5, SHA-1 and all of the SHA-2 family, hence drop the incomplete WinMessageDigest implementation in favor of any other supported implementation (at least the internal implementation is always available at compile-time).
  • Add --pause-metadata option: This option pauses downloads created as a result of metadata download. There are 3 types of metadata downloads in aria2: (1) downloading .torrent file. (2) downloading torrent metadata using magnet link. (3) downloading metalink file. These metadata downloads will generate downloads using their metadata. This option pauses these subsequent downloads.
  • Improve compiler/platform/libs information in logs: Add and use usedCompilerAndPlatform(). This adds compiler information to INFO logs and the --version output, and may be helpful when trying to diagnose/reproduce user-reported problems. Also make INFO logs include usedLibs() output. Closes #235.
  • Fix use-after-free on exit with multi-file torrent download + DHT: DefaultPieceStorage may be referenced by one of DHT task (e.g., DHTPeerLookupTask), after RequestGroup was deleted, and even after RequestGroupMan was deleted. DefaultPieceStorage has a reference to MultiDiskAdaptor which calls RequestGroupMan object on destruction. So when DHT task is destroyed, DefaultPieceStorage is destroyed, which in turn destroys MultiDiskAdaptor. DHT task is destroyed after RequestGroupMan was destroyed, MultiDiskAdaptor will use now freed RequestGroupMan object, this is use-after-free.
  • Fix bug that zero length file is not opened when flushing cache: This bug was only seen when MultiDiskAdaptor was used.
  • Support PREF_DIR change for Metalink files: Reworked previous commit adeead6f0396e2f8551d1182972e277728fd6c8b, and now support changing PREF_DIR for Metalink downloads.
  • Fix assertion failure when dir option of paused HTTP/FTP download is changed: When the directory is changed via aria2.changeOption RPC method, we directly change first FileEntry's path using FileEntry::setPath(). If there is no PREF_OUT option is given, basically file name is unknown, so we just set empty string and let the next run determine the correct file name and new directory is applied there. But previous code does not reset length property of FileEntry, so the unexpected code path is taken when unpaused and its path expects path is not empty string. This commit fixes this issue by setting length to 0 using FileEntry::setLength().
  • Save session only when there is change since the last serialization: This is a slight optimization not to cause useless disk access. This only applies to saving session automatically (see --save-session-interval). aria2.saveSession and serialization at the end of the session are always performed as before. When serialization, we first check that whether there is any change since the last serialization. To do this, we first calculate hash value of serialized content without writing into file. Then compare this value to the value of last serialization. If they do not match, perform serialization.
  • Fix (unknown length) downloads larger than 2GiB: Closes #215.
  • Fix F_PREALLOC based allocation on some OSX versions
  • Use index.html as filename for conditional-get when file is missing in URI: Previously we disabled conditional-get if file part is missing in URI. But we use constant string "index.html" in this case, so we can do the same to determine the modification time. In this patch, if we have file part in URI, we are not going to set absolute file path in FileEntry, since it prevents content-disposition from working.
  • Always add README.html to dist_doc_DATA: rst2html is required to produce README.html from README.rst. We include generated README.html to distribution. And rst2html is not required when compiling sources in distribution and always README.html is available.
  • Validate token using PBKDF2-HMAC-SHA1: This change should make token validation more resilient to: - timing attacks (constant time array compare) - brute-force/dictionary attacks (PBKDF2). Closes #220.
  • Add --disable-websocket configure option
  • mingw32: Enable wintls and compile with GMP: By enabling wintls, we can use Windows certificate store to validate server's certificate. Previously, we built windows build using openssl and since we don't bundle CA certificates, aria2 fails to validate server's certificate unless user setups their CA certificates. GMP provides fast big integer calculations, whic is used in BitTorrent encryption.
  • AppleTLS: Enable BEAST mitigations in ST: Only available in 10.9+, but since we might be building on a previous version but running on 10.9+, always try to set the option.
  • WinTLS: Accept chains with no revocation information: This is kind what browser do anyway (IE, Firefox, Chrome tested), what AppleTLS does, what GnuTLS does and what OpenSSL does. Actually, most browsers will also be OK with the CRL/OCSP provider being offline. WinTLS will still fail in that case. Should revocation information be available in the trust chain (CRL or OCSP) the certificate still will be checked! "Real" CAs, aka. those provided by the OS or system CA bundle, usually provide revocation information and are thus still checked. It should be mostly (only?) custom (organization) CAs that lack revocation information, but those users might want to use aria2 in their intranets and VPNs anyway.
  • Fix GnuTLS 2.x compatibility. Closes GH-216.
  • AppleTLS: Use newer, non-deprecated API in 10.8+

New in aria2 1.18.5 (Mar 31, 2014)

  • Changes:
  • 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 aria2 1.18.4 (Mar 26, 2014)

  • Changes:
  • Added support for RPC channel encryption in aria2rpc
  • 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
  • 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 aria2 1.18.3 (Jan 6, 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 aria2 1.18.2 (Dec 27, 2013)

  • Remove the outdated, broken build_osx_release.sh
  • Initial revision of the a new OSX release Makefile
  • Allow using libgmp with AppleTLS/WinTLS
  • Fix crash when metaurl contains unsupported URI or text
  • Fix bad fork() return value handling
  • Use some colors in progress reports (where available)
  • Implement basic color support for the Windows console
  • Only 033[*m (SGR) is supported, with a 16+16 color terminal.
  • AppleTLS: Implement PKCS12 loading.
  • Limit number of opened file globally with --bt-max-open-files option
  • This change changes the behavior of --bt-max-open-files. Previously, it specifies the maximum number of opened files for each multi-file download. Since it is more useful to limit the number globally, the option now specifies the global limit. This change suggests that aria2.changeOption() method now ignores --bt-max-open-files and aria2.changeGlobalOption now reads it and dynamically change the limit.
  • Don't fail multiple concurrent dl same file if auto-file-renaming is enabled
  • mingw32: Use CommandLineToArgvW() and GetCommandLineW() to read cmd-line args
  • This change enables aria2 to read unicode characters in command-line.

New in aria2 1.18.1 (Oct 21, 2013)

  • LibsslTLSContext: Remove weak cipher suite
  • AppleTLS: Enable --certificate
  • util::percentEncodeMini: Fix regression bug removed unsignedness
  • srange-based for around std::string is convenient but several functions depend unsigned char for correctness and readability.
  • Log exception; throw error if loading private key and/or certificate failed
  • Provide internal ARC4 implementation
  • Now you can build bittorrent support without without external libraries, meaning you can skip libnettle, libgmp, libgcrypt, GnuTLS and OpenSSL on OSX (for now).
  • Internal implementation of DHKeyExchange
  • Reusing a bignum (well, unsigned very-long) implementation I had lying around for years and just cleaned up a bit and brought to C++11 land.
  • It might not be the most performant implementation, but it shoud be fast enough for our purposes and will go a long way of removing
  • gcrypt, nettle, gmp, openssl dependencies when using AppleTLS and WinTLS (upcoming).
  • PKCS12 support in --certificate and --rpc-certificate options.
  • Add --disable-ssl configure option
  • Add internal md5 and sha1 message digests
  • Fix AppleMessageDigestImpl use with large data
  • Set old cookie's creation-time to new cookie on replacement
  • As described in http://tools.ietf.org/html/rfc6265#section-5.3
  • Fix link error with Android NDK r9

New in aria2 1.18.0 (Sep 11, 2013)

  • Changes:
  • Use AM subdir-objects
  • AM_SILENT_RULES([yes]) with backwards-compatiblity
  • Fix automake-1.14 am_aux_dir
  • Require external gettext for --enable-nls
  • Make AX_CXX_COMPILE_STDCXX_11 test for -stdlib=libc++ via std::shared_ptr
  • Make the configure check for C++11 compiler mandatory
  • Always build doc/manual-src
  • Win: Use SetConsoleCtrlHandler for SIGINT/SIGTERM
  • Implement a simple resource lock (threading)
  • Check for sphinx-build during configure
  • Add --with-disk-cache configure option
  • Change defaults: Enable 16M disk cache by default.
  • Always save control file if --force-save is given
  • Set log level DEBUG for unittests
  • Check that C++ compiler supports override keyword
  • AppleTLS: Fix MessageDigestImpl
  • AppleTLS: Fix session CFRelease stuff
  • Use AX_CXX_COMPILE_STDCXX_11 macro to detect C++0x/C++11 support in compiler
  • Require -std=c++11 and use std::shared_ptr instead of SharedHandle
  • Join URI on redirect
  • Send HAVE message to the peer which the piece is downloaded from
  • Improvements to --follow-torrent=false documentation.
  • SessionSerializer: Truly unique URIs
  • Make getOption RPC method return option for stopped downloads
  • SessionSerializer: Save spent URIs as well as remaining ones

New in aria2 1.17.1 (May 27, 2013)

  • 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
  • Check zlib availability usin AC_CHECK_LIB
  • Treat response is completed if EOF is received before streamFilter completes
  • uitos: Fix off-by-one error bug
  • Add configure support for linking tcmalloc_minimal and/or jemalloc
  • 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 aria2 1.17.0 (Apr 22, 2013)

  • Highlights:
  • This release 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 was implemented to mitigate long timeout when connecting to IPv6 host on dual-stack host. --save-session option only saves the options specified by command-line or RPC.
  • Changes:
  • Updated Russian manual
  • Updated Portuguese manual
  • Append --static to pkg-config arguments when ARIA2_STATIC=yes
  • Save options directly specified for download in --save-session
  • Save URI returned only from FileEntry::getRemainingUris()
  • Print linked 3rd party libraries with version in aria2c -v output
  • AppleTLS: Support credentials via KeyChain fingerprints
  • AppleTLS: Implement AppleTLS and Apple Message Digest
  • Use info level log for system trusted ca imports failure
  • Remove deprecated options: --enable-direct-io and --metalink-servers
  • Deprecate --enable-async-dns6
  • Fix uninitialized UDPTrackerClient::numWatchers_
  • Implement simple Happy Eyeballs for HTTP/FTP downloads
  • Parallel A and AAAA record lookups with c-ares

New in aria2 1.16.5 (Mar 25, 2013)

  • Fixes bug that invalid range error when requesting range starting 0:
  • Since the change b782a56b, we use endOffsetOverride_ as the return value of getEndByte(). But aria2 does not send Range header field when range starts 0 (this is because some server returns error if it received Range: 0-), and the HttpRequest::isRangeSatisfied() checks the equality of getEndByte() and the end byte in response header and fails. The fix is send Range header if getEndByte() is set.

New in aria2 1.16.4 (Mar 18, 2013)

  • Make configure argument meaning more consistent and obvious.
  • Most other software uses --disable/--without for features it does build or at least check by default.
  • Allow for out-of-tree Sphinx builds
  • Bring back datetime in console log
  • Run checksum check if -V and -c are used and file is completed
  • With -c option, aria2 can continue download after the existing file position. If it is not completed, then after completion aria2 runs checksum checking if available. But if existing file has already been completed, then CreateRequestCommand exits without issuing checksum checking. And aria2 treats it download error because it needs checksum verification but it has not been done. This change fixes this by properly checking download state and issue checksum checking before CreateRequestCommand.
  • Support for gzipped -i and --save-session
  • Saved sessions may very large, as in hundreds and even thousands of megabyte when dealing with large queues. Add support to save and reload sessions to gzipped files, when libz is available.
  • The session serializer will output gzipped contents when the file ends with .gz, while the input file reader (UriListParser) will accept whatever is thrown at it.
  • Document -i/--save-session gzip behaviour
  • Do not use a virtual varargs function
  • This stuff breaks in some compiler (configurations)
  • Check for sys/signal.h and/or signal.h
  • mingw-w64 does not actually have sys/signal.h, while OSX currently has a broken signal.h Better check the presence of both and use sys/signal.h if present, else signal.h
  • Hygiene: Fix some clang warnings, mostly unused private members.
  • Fix bustage on OSX with ./configure CC=cc CXX=c++ (clang)
  • Do not reference RequestGroups longer than necessary
  • There is an initial vector of SharedHandle to seed the DownloadEngine. This vector was however kept alive via main.cc -> MultiUrlRequestInfo up until the program exits, hence effetively leaking all initial RequestGroups and associated object instances.
  • Hence, as a matter of dirty-workaround, drop the contents of that initial vector as soon as it is not required any longer.
  • Detect console with on Windows
  • Fix infinite loop when size of downloadResults_ exceeds maxDownloadResult_
  • Support BitTorrent UDP tracker
  • It shares UDP listening port with IPv4 DHT. At the moment, in order to enable UDP tracker support, enable IPv4 DHT.
  • Show correct end byte in error message when HTTP response range is not ok
  • Previously, unless HTTP pipelining is enabled, end byte in that message is always 0. With this change, it shows correct end byte sent to the HTTP server.
  • Add Portuguese manual
  • This translation is based on aria2 version 1.15.2 manual. Contributed by Gilberto dos Santos Alves
  • Fix bug that active downloads are not saved with --save-session-interval
  • Change aria2 configure options so that:
  • --enable-*: do not build by default, unless --enable specified
  • --disable-*: check and build by default, unless --disable specified
  • --with-*: do not use by default, unless --with specified
  • --without-*: check and use by default, unless without specified

New in aria2 1.16.3 (Feb 4, 2013)

  • Check SSL_OP_NO_COMPRESSION is available before using it
  • Fix bug returnPeer is not called if sequence_ == INITIATOR_SEND_KEY
  • In InitiatorMSEHandshakeCommand, when aborting connection, we must return peer to the PeerStorage. But it is not done if sequence_ is INITIATOR_SEND_KEY. This causes stale Peer objects whose usedBy() returns true eventually occupies peer list and aria2 cannot make any connections.
  • Accept k and m as well as K and M in util::getRealSize()
  • mingw32: Make NTFS sparse file on --file-allocation=trunc
  • Added --save-session-interval option
  • --save-session-interval option saves error/unfinished downloads to a file specified by --save-session option every SEC seconds. If 0 is given, file will be saved only when aria2 exits.
  • Use request URI as referer if --referer="*" is given
  • Log warn if unknown option is found in config file or -i file
  • Added --console-log-level option
  • --console-log-level option sets log level to output to console.

New in aria2 1.16.1 (Dec 27, 2012)

  • mingw32: Re-open files with read-only mode enabled on seeding
  • On Mingw32 build, if aria2 opens file with GENERIC_WRITE access right, some programs cannot open the file aria2 is seeding. To avoid this situation, re-open files with read-only enabled when seeding is about to begin.
  • Save gid option with --save-session option
  • Added --gid option:
  • This option sets GID manually. aria2 identifies each download by the ID called GID. The GID must be hex string of 16 characters, thus [0-9a-zA-Z] are allowed and leading zeros must not be stripped. The GID all 0 is reserved and must not be used. The GID must be unique, otherwise error is reported and the download is not added. This option is useful when restoring the sessions saved using
  • --save-session option. If this option is not used, new GID is generated by aria2.
  • Use 64 bits random bytes as GID:
  • This change replaces the current 64 bit sequential GID with 64 bits random bytes GID in an attempt to support persistent GID. Internally, the GID is stored as uint64_t. For human representation and RPC interface, GID is represented as 16 bytes hex string. For console readout, 16 bytes are too long, so it is abbreviated to first 6 bytes.When querying GID in RPC calls, user
  • can speicfy the prefix of GID as long as the prefix is shared by more than 1 GID entries.
  • Fixed BitfieldMan::getOffsetCompletedLength overflow on 32-bit systems
  • mingw32: Use HANDLE only for MinGW32 build Changed console readout, making it more compact "SIZE:" is removed because it is obvious. SEEDING, SEED, SPD and UP are now replaced with SEED, SD, DL and UL respectively.
  • Compact readout when more than 1 simultaneous downloads are going on If more than 1 simultaneous downloads are going on, use more compact format in readout. Currently, at most 5 download stats are displayed.
  • util::abbrevSize() is rewritten to support "Gi" unit and provides more compact abbreviation.
  • Console color output:
  • Log level and download result string is now colored.
  • Logger: Simplified console output and change level format in log
  • The date and time are now removed from console output. The log level is now formatted as "[LEVEL]".
  • Start to find faster host before the number of missing segments becomes 1
  • The old implementation starts to find faster host when the number of missing segment becomes 1. Because of --min-split-size option, before the number of missing segment becomes 1, the number of connection becomes 1 and it can be slow. In this case, we have to wait until the last segment is reached. The new implementation starts to find faster host when the remaining length is less than --min-split-size 2, to mitigate the problem stated above.
  • Removed warning when --file-allocation=falloc is used in MinGW32 build The warning was just a mistake. SetFilePointerEx + SetEndOfFile actually allocate disk space.
  • Write data in 4K aligned offset in write with disk cache enabled This greatly reduces disk activity especially on Win + NTFS. Not so much difference on Linux.
  • mingw32: Removed FSCTL_SET_SPARSE set
  • Added --disk-cache option:
  • This option enables disk cache. If SIZE is 0, the disk cache is disabled. This feature caches the downloaded data in memory, which grows to at most SIZE bytes. The cache storage is created for aria2 instance and shared by all downloads. The one advantage of the disk cache is reduce the disk seek time because the data is written in larger unit and it is reordered by the offset of the file. If the underlying file is heavily fragmented it is not the case.

New in aria2 1.16.0 (Dec 3, 2012)

  • mingw32: Open file using _wsopen and added --enable-mmap support
  • Removed PO files and generated aria2.pot from repository
  • Set F_GLOBAL_NOCACHE for Mac OS X
  • Enabled TCP_NODELAY
  • Don't use AC_FUNC_MMAP
  • Added --force-save option
  • Get the correct uploaded data size
  • Made --http-no-cache false by default
  • Fixed memory leak in AsyncNameResolver
  • Fixed resource leak in XmlParser and GenericParser
  • Reset iostream format state
  • gnutls: Added more status checking when verifying peer
  • Content-Disposition parser conforming to RFC 6266.
  • RFC 2231 Continuation is not supported.
  • Reworked download/upload statistics calculation
  • Added --rpc-save-upload-metadata option
  • Perform SSL/TLS handshake after checking whether connection is established
  • Fixed bug that --enable-mmap won't work if MultiDiskAdaptor is used
  • RPC over SSL/TLS transport
  • aria2rpc: Added appendUri command
  • This command calls aria2.changeUri(GID, fileIndex, [], [URI,...]) internally.
  • Don't send Proxy-Connection header field
  • Don't set SNI hostname if it does not include "." for GNUTLS
  • Disable SSL/TLS compression with OpenSSL
  • Pause download even if download is completed
  • This allows to pause and unpause BitTorrent seed.
  • Use execlp() instead of execl()

New in aria2 1.15.2 (Sep 3, 2012)

  • This release fixes several critical bugs. It also adds new features such as TLS SNI and CORS support. The --file--allocation option now take another value trunc. The new option --enalbe-mmap was added. aria2 now uses system-wide SSL/TLS certificates by default, which eliminates the requirement to specify --ca-certificate option.
  • Changes:
  • Catch exception from Socket::getPeerInfo() when pooling connection. Socket::getPeerInfo() may fail if its TCP connection has already disconnected. In this case, we log this error. The success or failure of pooling connection should not affect the later execution of the program. This bug may cause segmentation fault if Socket::getPeerInfo() throws exception during pooling connection after successful tracker request.
  • Fixed assertion error if --retry-wait is used. In CreateRequestCommand, if Request object returned from getRequest() is still sleeping, CreateRequestCommand pools it back but still holds its reference. This makes assertion error in UnknownLengthPieceStroage::hasMissingUnusedPiece() from AbstractCommand::execute().
  • Added new file allocation method called 'trunc'. --file-allocation option can now take new value 'trunc'. 'trunc' uses ftruncate() system call or platform-specific counterpart to truncate a file to a specified length.
  • Use int64_t instead of off_t. Using off_t, at least, in DiskAdaptor layer is problematic because torrent can contain under 2GiB files but total sum of those files may exceed 2GiB limit, which makes off_t overflow in 32 bit system without large file support. So we use int64_t in API. We'll check the file length before download so that it does not exceed max off_t.
  • Added TLS SNI support.
  • Rewritten timegm replacement function. The algorithm is based on Python 2.7 calendar.timegm.
  • Use system-wide certificates for SSL. Use system-wide certificates for SSL. For GnuTLS it requires the latest version, 3.0.20. OpenSSL had it for longer. This means that if SSL library is properly configured to locate system-wide certificates store, the user don't have to use --ca-certificate option. Also packagers don't have to use --with-ca-bundle configure option. Patch from Cristian Morales Vega
  • Fixed base64::decode() return "" if input ends with garbage and no padding.
  • Changed default Peer ID prefix. The new Peer ID prefix is "A2-$MAJOR-$MINOR-$MICRO-", where $MAJOR, $MINOR and $MICRO are the major version, the minor version and the micro version respectively. For instance, 1.15.2 release of aria2 will use "A2-1-15-2-".
  • Don't percent-decode filename value in Content-Disposition. We only percent-decode filename* value in Content-Disposition because the encoding is fully specified. But since filename value is not, so we just accept it as is.
  • Don't sum in-flight piece which does not intersect filtered ranges. When calculating completed length, don't sum the completed length of piece which does not intersect filtered ranges.
  • Fixed segmentation fault when logger failed to open log file.
  • Added ARIA2_STATIC precious variable to configure option. To build statically linked aria2 binary, give ARIA2_STATIC=yes to configure, like this: $ ./configure ARIA2_STATIC=yes
  • Use PRId64 for int64_t format specifier
  • Handle the case when MINGW32 vsnprintf returns -1. MINGW32 vsnprintf returns -1 if output is truncated. Increased buffer for vsnprintf in WinConsoleFile and fmt.
  • Added --enable-mmap option. If this option is used, map files into memory using mmap(2). This option is experimental.
  • Added CORS preflight request support in RPC interface. This change is based on the patch from binux.

New in aria2 1.15.1 (May 30, 2012)

  • Return appropriate HTTP status code on RPC failure. In this change, we return 404 if the request path is neither /json-rpc nor /rpc. If XML feature is not enabled and /rpc is requested, return 404. If XML parser failed, return 400. JSON parser failure has been handled well in the existing code.
  • Ignore unacceptable options in RPC request instead of throwing error. This change allows RPC client to send same options for the different type of downloads.
  • Handle sockaddr_in.sin_len and sockaddr_in6.sin6_len. Check sockaddr_in.sin_len and sockaddr_in6.sin6_len are available and assign values to them properly. This change fixes unit test error and most error related to getnameinfo() on netbsd.
  • Removed dependency on inet_aton. Implemented inetPton as a replacement of inet_aton. inetPton is implemented using net::getBinAddr. This change fixes bug#3525424.
  • Added --with-bashcompletiondir configure option. By default, bash_completion file named aria2c is installed to the directory $prefix/share/doc/aria2/bash_completion. To change the install directory of the file, use --with-bashcompletiondir option.
  • Converted README.asciidoc into README.rst
  • Use Sphinx for aria2 manual page documentation. The source files for manual pages are placed under doc/manual-src. The manual pages are generated under doc/manual-src/$LANG/_build. The HTML version manual page was dropped from the distribution archive.
  • Fixed the bug which prevents --bt-lpd-interface from working. Fixes bug#3520125

New in aria2 1.15.0 (Apr 9, 2012)

  • Use CreateProcessW instead of CreateProcessA in MinGW build. This means filename is now passed as wchar string, not UTF-8 encoded char string.
  • Check with pkg-config only: c-ares, openssl, sqlite3 and zlib. Removed --with-*-prefix configure option for c-ares, openssl, sqlite3, zlib and expat. Use CPPFLAGS and/or PKG_CONFIG_PATH instead.
  • Fixed compile error with i686-w64-mingw32 and x86_64-w64-mingw32 cross compilers.
  • Get the home directory of the effective user ID using getpwuid() if $HOME is not defined.
  • Don't use locale dependent toupper and tolower.
  • Rewritten TLS hostname check based on RFC 6125 for both GNUTLS and OpenSSL builds.
  • Added --bt-remove-unselected-file option. Removes the unselected files when download is completed in BitTorrent. To select files, use --select-file option. If it is not used, all files are assumed to be selected. Please use this option with care because it will actually remove files from your disk. This option is default to false.
  • Fixed compile error on Open Solaris. Fixes bug#3497518
  • Added JSON-RPC over WebSocket.
  • Fixed assertion failure if Chunked encoding along with Content-Length is used.
  • Fixed clang and gcc-4.7 warning and errors.
  • Fixed the bug that aria2 cannot read line longer than 4096 bytes from the file specified by --input-file option. Fixes bug#3495336

New in aria2 1.14.2 (Feb 27, 2012)

  • Only accepts 32 bit integer values from int and i4 elements in XML-RPC. Fixed overflow bug in aria2.tellWaiting and aria2.tellStopped RPC methods.
  • Updated Spanish, Italian, Russian and Chinese (Simplified) translations. Thanks to all translators.
  • Fixed the bug that aria2 does not listen on address given in --interface.
  • Supported Windows UNC path.
  • Check scheme part in redirected URI more strictly. The previous implementation mistakenly sees '/abspath?uri=http://foo' as an absolute URI because it contains '://', but actually it is not. This change checks scheme part is constructed in the allowed character set described in RFC 3986 Section 3.1.
  • Allow missing params in XML-RPC request.
  • Fixed "Max payload length exceeded or invalid" error when the number of pieces is very large.
  • Added --deferred-input option. If true is given to --deferred-input option, aria2 does not read all URIs and options from file specified by -i option at startup, but it reads one by one when it needs later. This may reduce memory usage if input file contains a lot of URIs to download. If false is given, aria2 reads all URIs and options at startup. This option defaults to false.

New in aria2 1.14.1 (Jan 12, 2012)

  • Changes:
  • Supported network-path reference in HTTP redirect.
  • Updated bash_completion.
  • aria2 now doesn't assume download has completed just because file size matched. The only exception is zero-length file. If server tells that file is zero-length and --checksum option is given, aria2 now correctly checks its checksum. There is one known issue: If downloaded file is zero-length file and .aria2 file exists, it will not be deleted on successful verification, because .aria2 file is not loaded.
  • Fixed the bug that --checksum is not working. SFBUG#3466888
  • Fixed compile error without libnettle, libgcrypt and openssl. SFBUG#3466463
  • Fixed the bug that log file is not created if there is warning before log file is opened.

New in aria2 1.14.0 (Dec 27, 2011)

  • Changes:
  • Updated Chinese (Simplified), Spanish, French and Russian translations. Thanks to all translators.
  • Updated Russian man page. Thanks to ITriskTI.
  • Ignore peer which possibly sent bad data in next few minuts. In aria2, one piece is downloaded from several peers, so when hash check failed for that piece, it cannot determine which peer(s) sent bad data. So, we ignore peer who sent last block of data in random minutes. We use randomized timeout because all peers get waken up at the almost same time.
  • Added suggestion for unknown/ambiguous options. The help messages shown when argument error were redesigned and less verbose now. When unknown or ambiguous option is given, show suggestions like "Did you mean...". Some constant values related to levenstein distance are borrowed from git help.c.
  • Added --stop-with-process=PID option. This feature stops application when process PID is not running. This is useful if aria2 process is forked from a parent process. The parent process can fork aria2 with its own pid and when parent process exits for some reason, aria2 can detect it and shutdown itself. The code which detects whether or not given process PID is running is contributed by Emmanuel Engelhart.
  • Support IPv6 address for FTP via HTTP tunneling.
  • The previous implementation could not handle the situation when user, password and proxy URI is given various order. Now we just set rules: username set in --*-proxy-user overrides username in --*-proxy option, no matter in any order username, password and proxy URI are parsed. Likewise, password set in --*--proxy-passwd overrides password in --*-proxy option.
  • Changed format of ETA. Now no leading 0 is used. If hour part and/or min part is non-zero, and sec part is 0, sec part is omitted, like this "1h3m".
  • Rewritten Metalink XML parser. Now we don't strip white spaces while parsing Metalink V3 document.
  • Now xml attribute and characters in RPC request is not stripped at all.
  • Fixed bug that some information such as port number is lost if redirect URI contains only path component.
  • Apply PREF_MAX_CONNECTION_PER_SERVER to BitTorrent WEB Seeding hosts.
  • Reuse in-flight and pooled URIs when a download is paused.
  • Deprecated --metalink-server option. Use --split option instead.
  • Made max value of --select-file to 65535
  • Use same domain-match algorithm for no-proxy and netrc. Now "example.org" does not domain-match ".example.org" in both functions.
  • For waiting or paused downloads, the options listed in Input File subsection in man page are available in aria2.changeOption RPC method, except for following options: dry-run, metalink-base-uri, parameterized-uri, pause and piece_length.
  • Made --download-result, --save-session, --server-stat-of and --save-cookies option available in aria2.changeGlobalOption. In addition to them, the options listed in Input File subsection in man page are also available, except for following options: checksum, index-out, out, pause and select-file.
  • Made --uri-selector option available in -i list.
  • Support IPv6 literal address in proxy option.
  • Support IPv6 CIDR block in --http-no-proxy option.
  • HttpProxyOptionHandler: Enclose hostname with square brackets if hostname is IPv6 numeric address.

New in aria2 1.13.0 (Oct 10, 2011)

  • Check libgcrypt version is greater or equal to required version. This will fixes Debian bug#642989.
  • Added --piece-length option. This option sets a piece length for HTTP/FTP downloads. This is the boundary when aria2 splits a file. All splits occur at multiple of this length. This option will be ignored in BitTorrent downloads. It will be also ignored if Metalink file contains piece hashes.
  • Throw exception if parameter has wrong type in RPC method. Formally, depending on the method implementation, this kind of error is just ignored and parameter is skipped. Now aria2 responds error for these cases. The required parameter checking is also reworked along with this change.
  • Cleanup log message for binding server socket.
  • Recognize tab as white space before option in -i list.
  • Added geom parameter to --stream-piece-selector option. If 'geom' is given, at the beginning aria2 selects piece which has minimum index like 'inorder', but it exponentially increasingly keeps space from previously selected piece. This will reduce the number of establishing connection and at the same time it will download the beginning part of the file first. This will be useful to view movie while downloading it.
  • Added completedLength response key in aria2.getFiles RPC method
  • Added #checksum help tag.
  • Added --checksum option. Added --checksum=TYPE=DIGEST option. This
  • option sets checksum. TYPE is hash type. The supported hash type is
  • listed in "Hash Algorithms" in "aria2c -v". DIGEST is hex digest.
  • For example, setting sha-1 digest looks like this:
  • sha-1=0192ba11326fe2298c8cb4de616f4d4140213838 This option applies
  • only to HTTP(S)/FTP downloads.
  • Added --hash-check-only opiton. Added --hash-check-only option. If true is given, after hash check using --check-integrity option, abort download whether or not download is complete. The default value is false.
  • Added --download-result option. Added --download-result=OPT option. This option changes the way "Download Results" is formatted. If OPT is 'default', print GID, status, average download speed and path/URI. If multiple files are involve , path/URI of first requested file is printed and remaining ones are omitted. If OPT is 'full', print GID, status, average download speed, percentage of progress and path/URI. The percentage of progress and path/URI are printed for each requested file in each row.
  • Added --rpc-allow-origin-all option. This option adds Access-Control-Allow-Origin header field with value '*' to the RPC
  • response.
  • Ignore --out option supplied in command-line if -i is used. You can still use out option in the text file specified in -i.
  • Disable SSLv2 by default and optimize memory usage. Patch from Cristian Rodr√≠guez.
  • Added libnettle and libgmp support. libnettle and libgmp is usedby default. Old implementation uses libgcrypt as default. If more and more Linux distributions offer libnettle linked GnuTLS, then this change decrease library dependency against libgcrypt and libgpg-error. The current library detection for libnettle and libgmp is very simple, just use AC_SEARCH_LIBS. util::generateRandomData() was written using SimpleRandomizer, thus no external library dependency from this function.
  • In MinGW32, open file with UNICODE filename and print them in ANSI.

New in aria2 1.12.1 (Aug 2, 2011)

  • Initialize libgcrypt. We relied initialization of libgcrypt on
  • gnutls_global_init(), but recent change in gnutls, which changes
  • default crypto backend from libgcrypt to libnettle, leaves
  • libgcrypt uninitialized if it uses libnettle as backend(and this is
  • likely because libnettle is chosen by default). To fix this issue,
  • we simply initialize libgcrypt on our own.
  • Throw exception with error message if gnutls_global_init() failed.
  • Implemented Metalink/HTTP. Link header fields from first Metalink
  • server is utilized as described in rfc6249. We only set digest from
  • Digest header field to DownloadContext only when PieceStorage is
  • not initialized(in other words, before file size is known). After
  • PieceStorage is initialized, Digest header field is used to check
  • the value is the same in digest in DownloadContext. Current
  • implementation only handles rel=duplicate.
  • Remove Metalink content-type after first server response. We don't
  • accept Metalink content-type after first server response.
  • Updated Russian translation of aria2 man page. Thanks to ITriskTI
  • for translation.
  • Fixed the bug due to dangling pointers in RequestGroup.
  • RequestGroup holds a poitner to btRuntime_ and peerStorage_. After
  • removing them from BtRegistry, we failed to set 0 to them. When
  • program access them, it goes undefined world, such as random crash.
  • We found this bug when pasuing download and valgrind warned memory
  • corruption.
  • Added log message to clarify error for BitTorrent server socket.
  • Added #deprecated help tag.
  • Removed deprecated options: --enable-xml-rpc, --xml-rpc-listen-all,
  • --xml-rpc-listen-port, --xml-rpc-max-request-size, --xml-rpc-user,
  • --xml-rpc-passwd.
  • Removed use of O_DIRECT because of performance issue. Deprecated
  • --enable-direct-io option.
  • Increased the maximum number of in-flight request in BitTorrent.
  • Added --log option to aria2rpc

New in aria2 1.12.0 (Jun 30, 2011)

  • Added aria2c.1.asciidoc translated in Russian. Thanks to ITriskTI for translation.
  • Since aria2c.1 will be generated from aria2c.1.asciidoc, aria2c.1 was removed from repository.

New in aria2 1.11.2 (May 23, 2011)

  • Updated Japanese, Spanish and Simplified Chinese translation. Thanks to all translators.
  • Eliminated few seconds delay when downloads stop or pause. Added --metalink-base-uri option. --metalink-uri option specifies base URI to resolve relative URI in metalink file stored in local disk. If URI points to a directory, URI must end with '/'.
  • Run batch file with cmd.exe. Quoted user command. It seems that we have to specify the full path to cmd.exe in the first argument of CreateProcess() to run batch file in proper manner. We first determine the full path to cmd.exe. To do this, we get windir environment variable and concatenate it with "\system32\cmd.exe".
  • Fixed the bug that the message "Loaded cookies from ..." appears when loading cookies from that file failed.
  • Applied patch from Dan Fandrich. This patch fixes compatibility issue when compiling aria2 on older systems.
  • Support relative URI in Metalink file. If relative URI is found in Metalink file, aria2 resolves its full URI contatenating the URI from which Metalink file is retrieved and relative URI in Metalink file. This feature is not available if Metalink file in local disk
  • is specified in command line.
  • Erase user and password specified in command-line from argv. The user and password is masked with '*'.
  • If no data type tag is used in XML-RPC, treat the data as string.

New in aria2 1.11.1 (Mar 31, 2011)

  • Added --show-console-readout option. This option toggles appearance of console readout.
  • Fixed the bug that microsecond part of timeval overwlows in waitData(). This bug affects platforms which have kqueue() system call. Those systems are FreeBSD, OpenBSD, NetBSD and Darwin (Mac OS X).

New in aria2 1.11.0 (Mar 19, 2011)

  • Updated gettext to 0.18
  • Added JSON-RPC support. --enable-xml-rpc was deprecated and --enable-rpc should be used instead. Similarly, --xml-rpc-* options were replaced with --rpc-* options. We are implementing JSON-RPC based on JSON-RPC 2.0 draft spec.
  • Fixed rounding error in DownloadEngine::run(). This fixes the bug that executeCommand() with Command::STATUS_ALL is not called in every interval correctly because of rounding error in timer.
  • Refresh buckets at DHT initialization without checking serialized time. Checking serialized time does not work if you stop aria2 as soon as it started DHT. The serialized time in dht.dat will be updated, but buckets are not updated and still old. When you restart aria2 again soon, it does not refresh buckets because serialized time is recent.
  • Save downloads added by aria2.addTorrent or aria2.addMetalink in --save-session file. Uploaded data are saved as file named hex string of sha1 hash of uploaded data plus extension(".torrent" for torrent and ".meta4" for metalink). For example, 0a3893293e27ac0490424c06de4d09242215f0a6.torrent. The directory where these files are saved is specified by --dir option. These file paths are written in --save-session file.
  • Fixed the bug that causes segmentation fault when unpause RequestGroup which has resolved BtDependency.
  • Look for USERPROFILE and the combination of HOMEDRIVE and HOMEPATH to get user's home directory in MinGW32 build. Usually HOME environment variable is defined in *nix like OSes, but not in Windows. So in MinGW32 build, if HOME is not defined, we also look for USERPROFILE and the combination of HOMEDRIVE and HOMEPATH.
  • Fixed the bug that DownloadContext::basePath_ is not escaped.
  • Added Date, Expires and Cache-Control response header field to RPC response.
  • Added --async-dns-server option. This option accepts comma separated list of DNS server addresses used in asynchronous DNS resolver. Usually asynchronous DNS resolver reads DNS server addresses from /etc/resolv.conf. When this option is used, it uses DNS servers specified in this option instead of ones in /etc/resolv.conf. You can specify both IPv4 and IPv6 address. This option is useful when the system does not have /etc/resolv.conf and user does not have the permission to create it.
  • Accept https:// and ftp:// in proxy options and environment variables.
  • Fixed overflow in the calculation of progress percentage for file allocation and hash check when off_t is 32bit.
  • Accept HTTP 304 reply as success when If-None-Match request-header field is specified using --header option. When --conditional-get is used, --allow-overwrite is now required to overwrite existing file.
  • Added aria2.removeDownloadResult RPC method. The method signature is aria2.removeDownloadResult(gid). This method removes completed/error/removed download denoted by gid from memory. This method returns "OK" for success.
  • Use IP address of control connection to connect to the remote server in FTP passive mode.
  • Don't check permission of .netrc file in MinGW32 build.
  • Added --retry-wait option. This option was once existed in aria2 but erased on 2009-09-20. Now it is resurrected once again. We choose 0 as default value for backward compatibility. Now we retry HTTP download when remote server returns "503 Service Unavailable" if --retry-wait > 0. We also added error code 29: HTTP_SERVICE_UNAVAILABLE.
  • Don't show metadata download and paused download in "Download Results".

New in aria2 1.10.9 (Feb 16, 2011)

  • This release fixes the bug which prevents from making directories on Windows OS. It also fixes the bug that aria2 wrongly determines peer as a seeder and drop connection in seed state. Some improvements and bug fixes in BitTorrent implementation were made.
  • Please note that since 1.10.0 release, aria2 uses 1 connection per host by default and has 20MiB segment size restriction. So whatever value you specify using -s option, it uses 1 connection per host. To make it behave like 1.9.x, use -x16 -k1M (see --max-connection-per-server and --min-split-size option in man page). If you specify multiple hosts, aria2 will use all of them and open multiple connections.
  • Changes:
  • Bump up DHT version number to 3.
  • Don't try legacy BitTorrent handshake when first connection attempt timed out.
  • Fixed the bug that making directory fails on Windows OS.
  • Don't send announce_peer message with empty token in DHTPeerLookupTask. Replace old node ID with new node ID when response message is received in DHTAbstractNodeLookupTask.
  • Drop old node from DHT routing table if node ID has changed.
  • Drop connection if client and peer are both seeders.
  • Fixed the bug that peer is marked as seeder whenever it sends extension handshake with metadata size.

New in aria2 1.10.8 (Dec 20, 2010)

  • Moved #include inside of #ifdef ENABLE_NLS. If we put #include outside of #ifdef ENABLE_NLS and --disable-nls is used, gettext(msgid) is defined as ((const char *) (Msgid)). System header includes libintl.h regardless of --disable-nls. For example, #include will include libintl.h through include chain. Since libintl.h refers gettext and it is defined as non-function form, this causes compile error. User reported gcc-4.2.2 has this problem. But gcc-4.4.5 does not suffer from this problem.
  • Fixed compile error which occurs when system has posix_fallocate() but does not have fallocate().
  • Removed specializations of std::swap(PeerEntry&, PeerEntry&). Declaring std::swap(PeerEntry&, PeerEntry&) in class declaration breaks under Mac OS X 10.5. They are also not used. So we simply removed them.

New in aria2 1.10.7 (Dec 6, 2010)

  • Pass the number of requested files and file path to the command
  • specified --{bt-}on-download-* option.
  • Throw exception when unrecognized URI, bad Metalink or bad .torrent
  • file are given in command-line and exits with status non-zero.
  • Added aria2c bash_completion.
  • Added more error code values.
  • For MINGW32 build, percent-encode non-ASCII characters in filename.
  • Made --continue, --daemon, --no-conf, --no-netrc, --show-files,
  • -allow-overwrite, --allow-piece-length-change,
  • -realtime-chunk-checksum and --bt-require-crypto option take
  • optional argument.
  • Enter 'end game' mode from the beginning when getting torrent
  • metadata for quick data retrieval.
  • Use --max-connection-per-server option value for Metalink as well
  • Fixed memory leak with expat.
  • Added sha-224, sha-384, sha-512 hash function support.

New in aria2 1.10.6 (Nov 2, 2010)

  • Fixed the bug that downloading > 4GB file fails on 32bit systems.
  • Fixed improper use of vsnprintf in StringFormat which is mainly used for formatting strings of exception message. The actual bug reported by the user was that aria2 emitted segmentation fault error when very long URI(few thousands characters long) was given.
  • Fixed the bug that dht.dat file could not be saved. This is because a directory denoting temporary file path is wrongly created and thus aria2 fails to open the file as regular file.

New in aria2 1.10.5 (Oct 20, 2010)

  • Don't reuse socket which is readable because we assume that if socket is readable it means peer shutdowns connection and the socket will receive EOF. Added default timeout value to DownloadEngine::poolSocket().
  • Fixed the bug that file allocation is enabled in HTTP even if file-allocation=none is specified.

New in aria2 1.10.4 (Oct 13, 2010)

  • Updated Russian, Simplified Chinese and French translation. Thanks to all translators.
  • Use RFC1123 date format for creation date of .torrent file printed using -S.
  • Rewritten Cookie class and Cookie parser based on http://tools.ietf.org/html/draft-ietf-httpstate-cookie-15 Use inet_ntoa if inet_ntop is not available. Since inet_ntoa does not handle IPv6 address, IPv6 support is limited in this case. Fixed unit test error under mingw32.
  • Don't show warning message in console when CA certificates are not imported.--ca-certificate and --check-certificate option were mentioned in the error message displayed when certificate verification failed.
  • Print message when performing slow file allocation at first time.
  • Fixed compile error on OpenBSD4.7(i386).
  • Execute 5 DHT tasks concurrently in each task queue.
  • Fixed the bug that FtpFinishDownloadCommand does not handle timeout. This means it waits for the remote server to send "226 Transfer Complete" message *without* its own timeout until the remote server shutdowns connection(we can detect EOF in this case).
  • Rewritten util::escapePath(). Now it does not replace bad chars with '_':it performs percent-encoding against them.
  • util::fixTaintedBasename() now replaces "/" with "/".Added 0x7f as bad chars in util::detectDirTraversal().
  • Non-UTF8 filenames are now percent-encoded. The comments and name in .torrent file in XML-RPC response are percent-encoded if they are not UTF-8. Reset download start time of PeerStat because it is started before file allocation begins.
  • Without reset, we have incorrect download time and aria2 wrongly determines that download speed is too low if --lowest-speed-limit is used.
  • Added keys parameter to aria2.tellStatus, aria2.tellActive, aria2.tellWaiting and aria2.tellStopped XML-RPC method.'keys' is array of string. If it is specified, the response contains only keys in 'keys' array. If 'keys' is empty or not specified, the
  • response contains all keys.This is useful when you just want specific keys and avoid unnecessary transfers. For example, aria2.tellStatus("1", ["gid", "status"]) returns 'gid' and 'status' key.

New in aria2 1.10.3 (Sep 15, 2010)

  • Updated po templates.
  • Added note to --enable-http-pipelining option.
  • Print a message in console when download is not complete.
  • src/RequestGroupMan.c

New in aria2 1.10.2 (Sep 1, 2010)

  • In .netrc file, if machine name starts ".", aria2 performs domain match instead of exact match.
  • Fixed the bug which prevents HTTP redirection from working when downloading multiple files from same host at the same time.

New in aria2 1.10.1 (Aug 30, 2010)

  • Enter end game mode as soon as all pieces are assigned to peers toavoid substantial slow down at the very last stage of download.
  • Set max outstanding request size of BitTorrent download to 100. Setstepping to 6.
  • Added --bt-tracker and --bt-exclude-tracker option. In--bt-tracker option, you can specify comma separated list ofadditional BitTorrent tracker's announce URI. These URIs are notaffected by --bt-exclude-tracker option because they are addedafter URIs in --bt-exclude-tracker option are removed. In--bt-exclude-tracker option, you can specify comma separated listof BitTorrent tracker's announce URI to remove. You can use specialvalue '*' which matches all URIs, thus removes all announceURIs. When specifying '*' in shell command-line, don't forget toescape or quote it. Added bt-tracker and bt-exclude-tracker to -ilist option.
  • Listen both IPv4 and IPv6 for BitTorrent protocol.
  • Listen both IPv4 and IPv6 for xml-rpc request.
  • Added IPv6 DHT. Added --dht-entry-porint6, --dht-file-path6,--dht-listen-addr6 and --enable-dht6 option. IPv6 DHT is disabledby default. To use IPv6 DHT, you need to use --enable-dht6 andspecify a global unicast address to --dht-listen-addr6. IPv6 DHTis highly experimental.
  • Added support for peers6 key in tracker response. Added added6,added6.f and dropped6 in ut_pex.
  • Add only gracefully disconnected peer to ut_pex dropped list. Addincoming dropped list to PeerStorage.
  • Don't use pre-calculate hash value when end-game mode. Throwexception if bad piece is received.
  • Added bittorrent::packcompact() which replacesbittorrent::createcompact() and supports IPv6 addresses. Rewrittenbittorrent::unpackcompact() and bittorrent::extractPeer() tosupport IPv6 addresses. Fixed added.f flags in ut_pex.
  • Added --enable-async-dns6 option. This option enables IPv6 nameresolution in asynchronous DNS resolver. This option will beignored when --async-dns=false.
  • Use hostname of original URI when counting hostname ininFlightRequest.
  • Fixed the bug thatAdaptiveFileAllocationIterator::getCurrentLength() does not returnupdated allocated bytes.
  • Added FTP EPSV and EPRT command support. aria2 issues thesecommands when address family of local socket is AF_INET6.
  • Rewritten check for fallocate using AC_COMPILE_IFELSE.
  • Fixed the bug that HAVE_SOME_FALLOCATE gets undefined if fallocateis not available even if posix_fallocate is available. This causesFallocFileAllocationIterator.cc is out of compile targets andlinker error.

New in aria2 1.10.0 (Jul 19, 2010)

  • Metadata download may take very long time. If URIs are available, give up metadata download in at most 30 seconds.
  • Added --on-bt-download-complete=COMMAND option. For BitTorrent, a command specified in --on-download-complete is called when download completes and seeding is over. On the other hand, this option set the command to be executed when download completes but before seeding.
  • Added --conditional-get option. Download file only when the local file is older than remote file.
  • This function only works with HTTP(S) downloads only. It does not work if file size is specified in Metalink. It also ignores Content-Disposition header.
  • If a control file exists, this option will be ignored. This function uses If-Modified-Since header to get only newer file conditionally.
  • When getting modification time of local file, it uses user supplied filename(see --out option) or filename part in URI if --out is not specified.
  • FeedbackURISelector now tries to select URI whose host is least used in aria2 globally.
  • Added --min-split-size=SIZE option. aria2 does not split less than 2*SIZE byte range. For example, let's consider downloading 20MiB file.
  • If SIZE is 10M, aria2 can split file into 2 range [0-10MiB) and [10MiB-20MiB) and download it using 2 sources(if --split >= 2, of course). If SIZE is 15M, since 2*15M > 20MiB, aria2 does not split file and download it using 1 source.
  • Added --max-connection-per-server=NUM option. The default value of NUM is 1. This option limits the number of connections allowed to one server for each download. This means when NUM is 2 and 1 URI is provided, even if you specified -s 5, aria2 establishes 2 connections.
  • Set end byte in Range header if start byte > 0 to get more chance to pool socket.
  • Fixed ChunkedDecoder. It does not read trailer and final CRLF. Send each CWD component of FTP URI in separate CWD command as described in RFC1738.
  • Fixed the bug that aria2 cannot handle / in FTP URI properly. If directory component starts with / which percent-encode of '/', client should issue CWD to absolute path, but aria2 does not do that. It just issues relative path and download fails.
  • Added Chromium/Google Chrome Cookies file support. Thanks to gotrunks for original patch.
  • When allocating disk space, for Linux system with fallocate() system call, first check file system supports fallocate.
  • This just run fallocate with small chunk and see it succeeds or fails. If it succeeds, use fallocate() to allocate entire file otherwise fall
  • back to traditional slower method: writing zeros.
  • This behavior is enabled in --file-allocation=prealloc, so this is enabled by default for most modern Linux.

New in aria2 1.9.5 (Jun 28, 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 aria2 1.9.4 (Jun 4, 2010)

  • Updated Italian translation. Added Korean translation. Thanks to
  • all translators.
  • Fixed the bug that reading Metalink from pipe fails on older
  • libxml2. It only accepts "-" as a special keyword to read stdin.
  • Added log message when cookies are loaded. Added filename to log
  • message when serializing session.
  • Treat SIGHUP and SIGTERM signal as emergency shutdown because they
  • are usually issued by system or other process.
  • Don't throw exception when Metalink document is empty(no file
  • element). It is a valid Metalink document anyway.
  • Fixed the bug that feeding Metalink XML via pipe (-M- option) does
  • not work when aria2 is built with expat. Fixed the bug that when
  • Metalink XML is fed via pipe and --save-session is used, entry
  • "/dev/stdin" is saved in session file.
  • Added totalLength, completedLength, uploadLength, bitfield,
  • downloadSpeed, uploadSpeed, infoHash, numSeeders, pieceLength,
  • numPieces, connections and dir to the response of aria2.tellStopped
  • XML-RPC method. aria2.tellWaiting now always returns numSeeders
  • for BitTorrent download.
  • Fixed the bug that connection pooling does not take into account
  • proxy. This means that when connection A via proxy X is pooled, it
  • will be wrongly reused in the download using proxy Y.
  • Fixed the bug that FTP download may fail when control connection is
  • reused. This happens because FTP server can offer different root
  • directory for different account. If pooled connections has
  • different root directory, then download will fail.

New in aria2 1.9.3 (May 10, 2010)

  • Changes:
  • Fixed the bug that name attribute of file element in Metalink file is not properly sanitized.
  • Fixed the bug that if filename in Content-Disposition header includes ';', aria2 cuts filename after ';'.

New in aria2 1.9.2 (Apr 29, 2010)

  • Print warning when trying to add file descriptor >= FD_SET or < 0 to fd_set for other than MinGW32 build. For MinGW32 build, print warning when trying to add file descriptor to fd_set when it already contains FD_SET file descriptors.
  • Defined FD_SETSIZE 1024 for MinGW32.
  • Added missing timespec.h to SRCS
  • Fixed the bug that aria2.unpause fails with -s1.
  • Supported poll, kqueue, port_associate/port_getn for socket event notification

New in aria2 1.9.1 (Apr 15, 2010)

  • Updated Ukrainian, Russian, Simplified Chinese, German and Greek translation. Thanks to all translators.
  • Added warning for the system which lacks clock_gettime with CLOCK_MONOTONIC.
  • Fixed the bug that hash check hangs when aria2.pause is issued while aria2 is checking piece hashes. Fixed the bug that the download is paused after file allocation completion even if aria2.pause is issued during file allocation.
  • Fixed compile error on opensolaris
  • Added aria2.forcePause, aria2.pauseAll, aria2.forcePauseAll and aria2.unpauseAll XML-RPC method.
  • Use clock_gettime(CLOCK_MONOTONIC, ...) if it is available and usable to prevent from aria2 from being affected by system time change.
  • Added aria2.pause and aria2.unpause XML-RPC method. aria2.pause pauses the download denoted by gid. gid is of type string. The status of paused download becomes "paused" and the download is placed on the first position of waiting queue. As long as the status is "paused", the download is not started. To change status to "waiting", use aria2.unpause method. This method returns GID of paused download. aria2.unpause changes the status of the download denoted by gid from "paused" to "waiting". This makes the download eligible to restart. gid is of type string. This method returns GID of unpaused download.
  • Added --save-session=FILE option. This option saves error/unfinished downloads to FILE on exit. You can pass this output file to aria2c with -i option on restart. Please note that downloads added by aria2.addTorrent and aria2.addMetalink XML-RPC method are not saved.
  • Fixed the bug that FTP data connection is not established via proxy when --ftp-proxy is defined and --ftp-pasv=true and --proxy-method=tunnel.
  • Fixed the bug that web-seed URI is not percent-encoded.
  • Added aria2.shutdown and aria2.forceShutdown XML-RPC method. These methods, as their name imply, shutdown aria2. These methods are useful for Windows because it lacks signal mechanism.
  • Don't send "Accept-Encoding: default, gzip" by default. This is because some servers respond with "Content-Encoding: gzip" for a file which itself is gzipped file and aria2 inflates them. This is a problem if user doesn't want to inflate the file. Apparently this is server configuration error, but we cannot do anything about this. So we turned this off. Added --http-accept-gzip option. If true is given to this option, aria2 sends "Accept-Encoding: deflate, gzip" request header and inflates response if remote server responds with "Content-Encoding: gzip" or "Content-Encoding: deflate". We removed extension "tgz" hack in order not to inflate files with tgz extensions.
  • Made aria2 not send "application/metalink4+xml,application/metalink+xml" in Accept header for web-seeding URIs and tracker request.
  • Added --dht-message-timeout option.
  • Added --bt-tracker-connect-timeout and --bt-tracker-timeout option.
  • Documented that specifying --seed-time=0 disables seeding after download completed.
  • Drop connection if same Peer ID has been already seen.
  • Fixed the bug that waiting download unintentionally starts when URIs are added to it using aria2.changeUri XML-RPC method.
  • Fixed compile error with g++-4.4 on FreeBSD.
  • Fixed the bug that URIs added using aria2.changeUri XML-RPC method are not used immediately if there is no URI remaining before calling aria2.changeUri and the number of connection is less than the value in -s(or -C for Metalink downloads).
  • Added --always-resume and --max-resume-failure-tries option. If --always-resume=false is given, when all given URIs do not support resume or aria2 encounters N URIs which does not support resume (N is the value specified using --max-resume-failure-tries option), aria2 downloads file from scratch. The default behavior is --always-resume=true, which means if all URIs do not support resume, download fails. I think this is OK because user normally doesn't like to see that partially downloaded file is overwritten(this is particularly true if file size is big). This option is useful when aria2 is used as a download backend and graceful falling back to overwritten behavior is preferable. Added exit status value 8, which means download failed because server did not support resume.
  • Added --remove-control-file option. This option removes control file(*.aria2 file) before download. Using with --allow-overwrite=true, download always starts from scratch. This will be useful for users behind proxy server which disables resume. For such proxy user, -C1 is also recommended for Metalink downloads to avoid establishing unnecessary connections.
  • Added v key in DHT message. aria2's DHT version is independent of the package version and we defined it as 1 at the moment. It is defined as DHT_VERSION in src/DHTConstants.h. aria2's DHT version scheme is "A2"+2bytes DHT version number in network byte order.
  • Fixed the bug that value of numSeeders in aria2.tellStatus XML-RPC method response is integer, while it should be string. The man page says it is string. When peer's port is not listening port, set '0' to port in aria2.getPeers response.
  • Lines starting "#" in -i list are treated as comments.
  • Accept IPv4 network address with CIDR block in --no-proxy option and no_proxy environment variable. Current implementation does not resolve hostname in URI to compare network address. So it is only effecive if URI has numeric IP address.

New in aria2 1.9.0 (Mar 13, 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 aria2 1.8.3 (Feb 22, 2010)

  • This release fixes the bug that --file-allocation=falloc doesn't work with single file download. It also fixes the bug that the return value of aria2 is unreliable if error occurs before download begins. When custom request headers specified by --header option now override built-in headers if they have same name.
  • Changes:
  • Updated Chinese(Simplified) translation.
  • User-defined custom request headers specified by --header option now override builtin headers if they have same name.
  • Support RFC2231 "Parameter Value Character Set and Language Information" in Content-Disposition header.
  • Fixed the bug that aria2 doesn't handle return value if error occurred before download begins.
  • Fixed the bug that --file-allocation=falloc doesn't work with single file download.

New in aria2 1.8.2 (Feb 4, 2010)

  • Added Portuguese translation. Updated Ukrainian and Spanish translation. Thanks to all translators.
  • Call ares_library_init and ares_library_cleanup if they are available. Some code cleanups.
  • Call ares_process_fd() each time after epoll to handle timeout.
  • Added bittorrent key to the response of tellStatus XML-RPC method. The associated value of the key is a struct and contains data retrieved from .torrent file, such as name, announce-list, comment, etc.
  • Rewritten Cookie storage.
  • Handle redirected URI which is not properly percent encoded.
  • Fixed the bug that causes segmentaiton fault when aria2 sees '404 not found' in the N times(N is where --max-file-not-found=N, N>0) in a row without single '200 OK' response.
  • Fixed compile error with i586-mingw32msvc-g++. Always Cut console readout by 80 characters in mingw32 build.
  • Fixed compile error with intel compiler

New in aria2 1.8.1 (Jan 25, 2010)

  • aria2 now returns gzip compressed XML-RPC response if XML-RPC client accepts gzip content encoding.
  • Added dir and files key to the response struct of aria2.tellStatus XML-RPC method. The value associated with files key is the list of files. Its element is the same struct used in aria2.getFiles XML-RPC method. Added uris key to the response struct of aria2.getFiles XML-RPC method. The value associated with uris key is the list of URIs. Its element is the same struct used in aria2.getUris XML-RPC method.
  • Added aria2.getSessionInfo XML-RPC method. This method returns a struct containing Session ID, which is generated each time when aria2 is invoked.
  • Now offset argument in aria2.tellWaiting and aria2.tellStopped accept a negative integer. 'offset' == -1 points last download in the waiting queue and 'offset' == -2 points the download before the last download, and so on. The downloads in the response are in reversed order.
  • Added --human-readable option. This option, when true is given, prints sizes and speed in human readable format(e.g., 1.2Ki, 3.4Mi) in the console readout. The default value is true and it looks exactly the same as aria2-1.8.0. So the 'new feature' appears when false is given. In this case, sizes and speed are printed in bytes. No Ki, Mi units conversion is used. This may be useful for a program to parse the output of aria2.
  • Now --all-proxy, --http-proxy, --https-proxy and --ftp-proxy option accept empty string "". When "" is given, it erases previously defined proxy.
  • Added --bt-metadata-only option. If true is given to this option, aria2 downloads metadata only. The file(s) described in metadata will not be downloaded. This option has effect only when BitTorrent Magnet URI is used. See also --bt-save-metadata option.
  • Fixed memory leak. Commands stored in std::deque are not deleted when exception is thrown.
  • Replaced '/' and '' with '_' in HTTP/FTP filename.
  • Treat --dir="" as --dir="."
  • Added --http-no-cache option. When true is given, aria2 sends Cache-Control: no-cache and Pragma: no-cache header to avoid cached content. If false is given , these headers are not sent and you can add Cache-Control header with a directive you like using --header option.
  • Added following sentence to the help message of --out option: --out option is ignored when -Z is used.
  • Added --bt-save-metadata option to -i list options.
  • Fixed compile error with i586-mingw32msvc-gcc 4.4.2, which is debian's corss compiler, without any additional libraries.
  • Fixed the bug that causes segmentation fault if unknown option is put in aria2.conf file. BUG#2928303
  • Ignore port message with port=0.
  • Updated autoconf/automake auxiliary files.

New in aria2 1.8.0 (Dec 28, 2009)

  • Added signal handler for SIGHUP to save .aria2 file when terminal is closed. The handler is the same one for SIGINT and SIGTERM.
  • Added system.multicall XML-RPC method.
  • Added tellStopped XML-RPC method. This method returns stopped download in the specified range. It takes same parameters with tellWaiting XML-RPC method. offset = 0 means the oldest download.
  • Use AI_ADDRCONFIG flag if it is available. Refactored so that getaddrinfo calls are not scattered around. Unset AI_ADDRCONFIG when conducting unit tests because they fail if networking interface is not configured with IPv4 address.
  • Added --bt-save-metadata option. When true is given, it saves metadata as .torrent file. This option has effect only when BitTorrent Magnet URI is used. The filename is hex encoded info hash with suffix .torrent. The directory to be saved is the same directory where download file is saved. If the same file already exists, metdata is not saved.
  • 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.
  • Added getOption and getGlobalOption XML-RPC method. getOption takes GID as a parameter and returns its options as struct. getGlobalOption takes no parameter and returns global options. Because global option is used as a template for the option of newly added downloads, it includes options returned by getOption.
  • Added following 2 keys, followedBy and belongsTo, to the response of tellStatus.
  • Show info hash in Magnet URI in upper case letters in -S output.
  • Fixed the bug that if --without-sqlite3 is given, pkg-config is not properly used in configure script and failed to detect gnutls. This is because explicit call of PKG_PROG_PKG_CONFIG is missing and the initialization of pkg-config is done in first occurrence of PKG_CHECK_MODULES which is not executed because it is inside of sqlite3.m4. Added explicit PKG_PROG_PKG_CONFIG call.

New in aria2 1.7.2 (Dec 14, 2009)

  • Fixed the bug that RequestGroupMan::downloadFinished() returns true even if all downloads haven't finished, especially when PostDownloadHandler is involved. Changed the condition so that it only returns true if both _requestGroups and _reservedGroups are empty.
  • Enabled DHT by default because of Magnet URI support. To disable DHT, use --enable-dht=false
  • Print Magnet URI in -S output.
  • Fixed the bug that line separator is missing in horizontal bar in aria2mon.
  • If '-' is given as an argument to --metalink-file option, aria2 reads Metalink file from stdin.
  • Fixed the bug that aria2 listens wrong port if --interface option is used.
  • Fixed the bug that query parameter in magnet URI is not decoded.

New in aria2 1.7.1 (Dec 6, 2009)

  • Fixed the bug that --bt-prioritize-piece=tail is not working.

New in aria2 1.6.3 (Nov 2, 2009)

  • Updated Polish, Catalan, French, Italian, Russian and Japanese translations. Thanks to all translators.
  • Fixed the bug that DHTAbstractNodeLookupTask never finishes if error occurred in DHTMessageDispatcherImpl::sendMessage().
  • Fixed the bug that in Windows environment new blank line is inserted when console readout is updated.
  • Fixed the bug that when downloading more than one torrent with multiple ports in --listen-port, listening port is not reported properly to tracker for 2nd or later torrents.
  • Fixed typos in documentation.
  • Fixed the bug that Netrc::parse() cannot recognize comment line.
  • Fixed Metalink piping no longer works.
  • Fixed "--ftp-passwd" option ignored when user name embedded in URI.

New in aria2 1.6.2 (Oct 10, 2009)

  • This release fixes segmentation fault error if URI to download contains printf format string and logging is enabled. The build scripts are updated to automake 1.11 and autoconf 2.64. Updated Ukrainian translation.
  • Changes:
  • Replaced aria2 with aria2c in help message.
  • Don't set localedir manually. Leave it to autoconf.
  • Added --install to ACLOCAL_AMFLAGS. Removed m4 from SUBDIRS.
  • Updated automake 1.11 and autoconf 2.64. Replaced some obsolute macros with new one.
  • Removed Makefile.am in m4 directory. Removed unused m4 macros.
  • Fixed the bug that causes segmentation fault if req->getCurrentUrl() contains printf format string such as %d. The statement that causes this bug is useless and removed.

New in aria2 1.6.1 (Oct 7, 2009)

  • This release fixes memory leak in HTTP/FTP download. It also fixes the bug that the option values changed by XML-RPC changeOption and changeGlobalOption methods are cleared. Now User-agent and Peer ID include version number. Updated Simplified Chinese translations.
  • Changes:
  • Don't save control file when aria2 exits while checking piece hash(behavior of -V option). If control file doesn't exist when aria2 launches, the completed length in saved control file will be 0 byte and this confuses user.
  • Included version number in Peer ID and client version. Peer ID now starts with "aria2/VERSION-", where VERSION is MAJOR.MINOR.MICRO. Client version is aria2/VERSION.
  • Included version number in user-agent string.
  • Fixed memory leak in HTTP/FTP download.
  • Fixed the bug that the option values changed by XML-RPC methods(changeOption and changeGlobalOption) are overwritten to the previous value by the next these requests which doesn't contain that option value.
  • Added missing help message for remove command to aria2rpc.

New in aria2 1.6.0 (Sep 21, 2009)

  • Added XML-RPC in -v Configuration output.
  • Updated Bulgarian, Russian, Slovak and Japanese translations. Thanks to all translators.
  • Removed --retry-wait option since the current architecture doesn't allow sleep for particular URI.
  • Removed Retry-After header support since the current architecture doesn't allow sleep for particular URI.
  • Added our own daemon() function for systems which desn't have daemon(3).
  • Added help category tag #file. Added #file tag to the options related to downloaded file.
  • Added help category tags: #cookie and #hook. Added #https tag to --https-proxy and --https-proxy, --all-proxy and --no-proxy.
  • A help category tag now starts with "#" to distinguish a category from keyword search. For example, "http" tag is now "#http". You can type "--help=#http" to get explanation of options related to http. If '#' is omitted, then the argument is treated as a keyword and aria2 searches options whose name includes the keyword and print matched ones. For example, "--help=http" will show options whose name includes "http".
  • Added xml-rpc help tag. Tagged xml-rpc related options with xml-rpc tag.
  • Fixed the bug that server performence profile is not updated when aria2c was terminated by emergency shutdown.
  • Added XML-RPC client scripts written in ruby.
  • Added support for IPv6 literal address in URI. Now aria2 can handle URI such as http://[::1]/
  • Fixed the bug that HTTP request header for XML-RPC request is not parsed properly.
  • Added --xml-rpc-listen-all option. If true is given to this option, aria2 listens incoming XML-RPC requests on all network interfaces. If false is given, listens only on local loopback interface. The default value is false.

New in aria2 1.5.1 (Jul 27, 2009)

  • Fixed compile error without BitTorrent support
  • Rewritten stream error handling
  • Make sure that stream is closed before renaming file. Unit test fails on mingw32 in the previous implementation.
  • Fixed the unit test error without sqlite3
  • Fixed the linker error under 32bit systems.

New in aria2 1.5.0 (Jul 20, 2009)

  • Updated Russian, Italian, Danish, Bulgarian, Japanese and Ukrainian translations. Thanks to all translators.
  • Avoid to create zombie process when commands specified in --on-download-options are executed.
  • Fixed the bug that http-user, http-passwd, ftp-user and ftp-passwd are ignored when they are given via XML-RPC.
  • Added 'errorCode' to the reponse of tellStatus xml-rpc method. This key is only available for stopped/completed downloads and its value is the error code defined in EXIT STATUS in man page.
  • Implemented getVersion xml-rpc method. This method returns struct which has 2 key-value pairs: "version" key is associated to the version of aria2, such as "1.5.0". "enabledFeatures" key is associated to the list of enabled features, such as "Async DNS", "BitTorrent".
  • Removed TLS1.1 protocol support when aria2 is built with gnutls for compatibility issue.
  • Disabled --use-head option by default because --use-head=true causes problems on some web sites.
  • Print URL List in -S option for torrent.
  • Added --bt-stop-timeout=SEC option. This function stops BitTorrent download if the download speed is 0 in consecutive SEC seconds. By default, this function is disabled.
  • Throw exception if file path doesn't exist in FTP URL.
  • Try all available addresses returned by DNS until it gets connected in HTTP(S)/FTP download
  • Don't print "No files to download." message if -S is given.
  • Added support of WEB-Seeding for multi-file torrent.
  • Added tellWaiting XML-RPC method.
  • The default value of --dir option is the absolute path to the current directory. If getcwd() is failed, then it is ".", which is the same value with old implementation. This change is necessary because after daemon() call, the current working directory is changed to /.
  • Call daemon() with arguments(0,0), which means daemon() changes current working directory to / and redirects stdin, stdout and stderr to /dev/null.

New in aria2 1.4.1 (Jun 9, 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 aria2 1.4.0 (May 31, 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 aria2 1.4.0 Beta Build 20090523 (May 25, 2009)

  • 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 aria2 1.4.0 Beta Build 20090516 (May 17, 2009)

  • 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 aria2 1.3.3 (May 8, 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 aria2 1.3.2 (Apr 28, 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 aria2 1.3.1 (Apr 13, 2009)

  • Updated README
  • 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 aria2 1.2.0 (Feb 16, 2009)

  • Updated Indonesian, Italian, Japanese, Russian, Spanish and Ukrainian translations. Thanks to all translators.
  • 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 aria2 1.1.2 (Dec 29, 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 aria2 1.1.1 (Dec 28, 2008)

  • Fixed the bug that --summary-interval=0 doesn't work. The summary is printed repeatedly. It should not be printed if 0 is specified.

New in aria2 1.1.0 (Dec 23, 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 aria2 1.1.0 Beta (Dec 19, 2008)

  • 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.
  • 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 aria2 1.0.1 (Nov 25, 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 aria2 1.0.0 (Nov 25, 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 aria2 0.16.2 (Oct 22, 2008)

  • Fixed the bug that aria2 aborts when a request larger than 16KiB is received. 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 aria2 0.16.1 (Oct 15, 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.
  • 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 aria2 0.16.0 (Oct 7, 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 aria2 0.15.3 (Sep 6, 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.

New in aria2 0.15.2 (Aug 16, 2008)

  • Fixed memory leak
  • Removed max chunk size check. This change fixes BUG#2040169
  • Fixed unmatched malloc/free.
  • Now aria2 uses name attribute in Metalink as local filename in
  • BitTorrent downloads. BUG#2033999
  • Fixed occasional assertion failure in PieceSegment.
  • Fixed man page: --follow-bittorrent should be --follow-torrent
  • Added Danish and Greek translations.
  • Updated Catalan, Norwegian Nynorsk and Spanish translations.

New in aria2 0.15.1 (Aug 1, 2008)

  • Fixed broken gzip inflation.
  • Avoid repeated call of gettimeofday() in SpeedCalc to lower CPU usage.
  • Applied tizianomueller's patch.
  • Applied MinGW compile fix by rossta.
  • Updated Bulgarian and French translations.

New in aria2 0.15.0 Beta (Jul 23, 2008)

  • Added gzip, deflate decoding support in HTTP using zlib.
  • Support for FTP servers which don't support SIZE/REST command.
  • Added --bt-seed-unverified option to seed previously downloadedfiles without verifying piece hashes.
  • Fixed the bug that causes infinite loop when the number of piecesare fewer than allowed fast set size which is 10 by default.
  • Added the ability to retrieve and save signature from Metalink file.A retrieved signature is stored in Signature class and it is held byDownloadContext class. Note that aria2 doesn't verify signature.
  • Fixed the bug that UTF-8 encoded URL is not URL-encoded properly.
  • Supported absolute/relative path in Location header field.

New in aria2 0.14.0 (Jun 21, 2008)

  • Changed -s options behavior. Now it means the number of connections made simultaneously in each http/ftp download. If 1 URL is specified, the behavior is the same with old implementation. If -s N is given and more than N URLs are specified, first N URLs are used and remaining URLs are used for backup. If less than N URLs are specified, some of URLs are used more than once so that totally N connections are made simultaneously.
  • Changed default value of -s option from 1 to 5. Also max value of -s option is changed from 5 to 16.
  • Reduced CPU usage on high load.
  • Added epoll support.
  • Fixed compile error on debian etch. BUG#1980766
  • Added --bt-request-peer-speed-limit=SPEED option. In BitTorrent downloads, if the download speed is lower than SPEED, aria2 initiates and accepts connections ignoring max peer cap.
  • Reduced read operation for hash calculation.
  • Fixed the bug that aria2 cannot respond bttrack's nat check properly.
  • Fixed the bug that HTTP downloads don't start with old libraries. BUG#1985394
  • Fixed the bug that aria2 aborts when a path to a directory is given in command-line.
  • Added --bt-max-open-files option, which specifies maximum number of files to
  • open in each BitTorrent download. REQUEST#1811507
  • Create only requested files and files which shares a piece with requested file in multi-torrent downloads. Directory structures are also created in the same rule. BUG#1781684
  • When there is not enough space in disk, aria2 prints error in the console and cancels that download. BUG#1640332

New in aria2 0.13.2 (May 26, 2008)

  • Implemented auto protocol detection.
  • Added --header option. You can specify any number of additional HTTP headers
  • Now sockets are reused in a single aria2 instance if --enable-http-keep-alive is enabled.
  • Added --quiet option to make aria2 quiet (no console output).
  • Added "transparent metalink" support.
  • Removed query part from filename inHTTP download. The query part means the substring after "?" inURL. Firefox seems do the same thing.
  • Fixed the bug that causes segmentaion fault when reading XML containing unescapsed characterlike '&'. BUG#1932809 Enabled --enable-http-keep-alive by default.
  • Reuse connection if --enable-http-keep-alive is true.
  • Added --ftp-reuse-connection option, which is enabled by default. If it is set to true, aria2 reuses the connection of FTP, which avoids time consuming establishing connection/login interaction.
  • Added --async-dns option to enable/disable asynchronous DNS resolver.
  • Fixed infinite loop in checksum checking.
  • Fixed busy loop in a certain situation because of uninitialized fd_set.
  • Added the ability to output download progress summary in a given interval(default 60 seconds)
  • Added --log-level option.

New in aria2 0.13.0 (Mar 1, 2008)

  • BUG#1851066 aria 0.12.0 Exception error Failed to convert string
  • BUG#1848214 Download completes, but text could be confusing
  • BUG#1855875 Does not finish download -- "No segment available"
  • BUG#1864525 Range problem
  • BUG#1866924 torrent-transfers stall in aria2-only torrent cloud
  • BUG#1875079 regression / log not available in SVN version
  • BUG#1880673 Old aclocal produces problem on amd64
  • Fixed segmentation fault when bad torrent metainfo is parsed.
  • BUG#1897704 return code is always zero
  • Translations:
  • Polish
  • Thai
  • Indonesian
  • Norwegian Nynorsk
  • Hungarian
  • Added --metalink-preferred-protocol to set preference among available protocols in metalink.
  • Added Expat XML library support.
  • Added --metalink-enable-unique-protocol option.
  • Added uTorrent compatible Peer Exchange. See --enable-peer-exchange.
  • Show the seed ratio after torrent downloads.
  • Added DHT functionality, compatible with mainline. See --enable-dht and --dht-listen-port option.
  • Added BitTorrent encryption support.
  • Remove a defunct control file. A defunct control file means that while it exists, but the corresponding download file is missing. After its removal, a download restarts from the beginning.
  • Added categorized option help. Specify category using --help option. Also added the ability to search options in forward match.
  • Added --no-conf and --conf-path command-line option.
  • Updated gettext related files.
  • Added the ability to stop aria2 itself when given time has passed from start. See --stop option.