Latest release

aria2 1.31.0

@tatsuhiro-t tatsuhiro-t released this Jan 16, 2017

Release Note

This release fixes assertion error in
SimpleRandomizer::getRandomBytes. It adds new option


  • Better error message when local file status cannot be retrieved


  • Fix assertion failure in SimpleRandomizer::getRandomBytes

    errno might not be initialized to 0, and we may get both rv == -1
    and errno != ENOSYS. This leads to assertion failure. Since
    getrandom_linux always returns -1 on failure, checking errno is
    useless in this function.


  • Add option content-disposition-default-utf8

    Patch from JimmyZ



aria2 1.30.0

@tatsuhiro-t tatsuhiro-t released this Dec 15, 2016 · 18 commits to master since this release

Release Note

This release fixes several bugs. See Changes below for detailed bug
fixes. This release adds an ability to expand ${HOME} to user's
home directory in several options. It would be useful when used in
configuration file. -S option against torrent file now prints out DHT


  • 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

    The following options implement this substitution:

    • --ca-certificate
    • --certificate
    • --dht-file-path
    • --dht-file-path6
    • --dir
    • --input-file
    • --load-cookies
    • --log
    • --metalink-file
    • --netrc-path
    • --on-bt-download-complete
    • --on-download-complete
    • --on-download-error
    • --on-download-start
    • --on-download-stop
    • --on-download_pause
    • --out
    • --private-key
    • --rpc-certificate
    • --rpc-private-key
    • --save-cookies
    • --save-session
    • --server-stat-if
    • --server-stat-of
    • --torrent-file


  • Document that libaria2 is not thread safe


  • configure: Use pkg-config to find libs whenever possible

    Use pkg-config to find cppunit, libxml2 and expat. All those
    libraries provide pkg-config files, and in all of those cases the
    pkg-config macro is superior to the custom macros used currently.

    The advantages of pkg-config files include:

    • Explicit static linking support via --static. Currently, e.g.
      'xml2-config --libs' prints all libraries needed for static
      linking when doing dynamic linking unnecessary, resulting in
      unnecessary direct deps.

    • Better cross-build support. You don't have to build the additional
      *-config tools for target.

    • Better multilib support. Per-ABI pkgconfig directories are
      commonly supported while packages usually fail to look for
      per-CHOST *-config variants.

    • Better override support. The current macros allow little to no
      result overrides, the pkg-config macros let you pass FOO_CFLAGS
      and FOO_LIBS manually.

    • Cleaner version checks. The code used in libxml.m4 is really

    Patch from Michał Górny


  • WinTLS: Rewrite writeData

    We re-wrote WinTLSSession::writeData. The major points are:

    • Buffer is now preallocated once handshake is finished.
      Previously, they are allocated each time when we send one TLS

    • Schannel uses header, body and trailer for each secBuffer. Now we
      send them off at once using WSASend which is windows counterpart
      of sendv. Previously, we do memmove if some of them are

    • We don't try to send application data in
      WinTLSSession::closeConnection, since semantically we need same
      application data used to create TLS record before. Using 0 length
      data to finish sending buffered data looks like a hack.



aria2 1.29.0

@tatsuhiro-t tatsuhiro-t released this Nov 15, 2016 · 50 commits to master since this release

Release Note

This release fixes several bugs. See Changes below for detailed bug
fixes. This release adds 1xx non-final response support. Wslay
library is updated to the latest revision.


  • WinTLS: Fix busy loop on write error


  • Support 1xx non-final response


  • Update wslay


  • Don't download piece which is filtered out (e.g., --select-file)

    This commit fixes the bug that piece which is not requested by
    --select-file is downloaded in multi-file Web-Seeding.



aria2 1.28.0

@tatsuhiro-t tatsuhiro-t released this Oct 16, 2016 · 59 commits to master since this release

Release Note

This release fixes the bug that file name is not logged with
--conditional-get option is used. The new option
--keep-unfinished-download-result was added to keep incomplete
downloads in memory regardless of --max-download-result so that we can
save those downloads with --save-session option. This option is
enabled by default.

This release


  • Restore LTLIBINTL in src/

    Patch from Juan Francisco Cantero Hurtado

  • Add --keep-unfinished-download-result option

    This option keeps unfinished download results even if doing so
    exceeds --max-download-result. This is useful if all unfinished
    downloads must be saved in session file (see --save-session option).
    Please keep in mind that there is no upper bound to the number of
    unfinished download result to keep. This option is enabled by

  • Fix -Wexpansion-to-defined warning with clang-3.9

    The error message was:

    warning: macro expansion producing 'defined' has undefined behavior

  • Fix bug that file name is not logged with --conditional-get



aria2 1.27.0

@tatsuhiro-t tatsuhiro-t released this Sep 16, 2016 · 80 commits to master since this release

Release Note

This release fixes bug which may cause crash if UDP tracker is used.
It adds new option --save-not-found which prevents downloads failed by
"not found" error from being saved in session file.


  • Hard-disable openssl in osx build

    Closes #739

  • Fix possible cause of crash if UDP tracker is used

  • Remove custom ftruncate64 for Android

    The latest NDK versions support ftruncate64, so building a local
    copy of ftruncate64 is no longer needed.

    Also, the arm and x86 builds of ftruncate64 failed when targeting
    API level 21 or higher, as they include which are not
    present starting from API level 21.

    Patch from Fredrik Fornwall

  • Fix typo found by Debian's Lintian

  • Add --save-not-found option

  • Update comment to match code

    Patch from Torbjörn Lönnemark

  • WinTLS: Better errors (from WSA)

  • Compile with openssl 1.1.0


aria2 1.26.1

@tatsuhiro-t tatsuhiro-t released this Aug 28, 2016 · 107 commits to master since this release

Release Note

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


  • Make assertion hold

    If we have peer which is already used, make addAndCheckoutPeer()
    fail. If peer is in unused list, first remove the old entry, and
    then add new one. This would make assertion in ~DefaultPeerStorage


aria2 1.26.0

@tatsuhiro-t tatsuhiro-t released this Aug 20, 2016 · 107 commits to master since this release

Release Note

This release fixes linking bug with libaria2 enabled. It also changes
how aria2 renames the download file name when the same name already
exists in file system. In summary, we use numbers before extension
(e.g., foo.1.txt), rather than after extension (e.g., foo.txt.1). Now
--seed-time option can take floating point number to specify
fractional minutes.


  • aria2mon: Replace 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

  • 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

    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

    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 GH-704


aria2 1.25.0

@tatsuhiro-t tatsuhiro-t released this Jul 15, 2016 · 148 commits to master since this release

Release Note

This release fixes many bugs reported so far. There is no new
functionality in this release. We have fixed many performance issues
in BitTorrent downloads.


  • 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

  • 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 OSX build

    Closes GH-694

  • aria2mon: Add --secret option

    Fixes GH-700

  • Set server status error on network failure in server performance

  • Disable AI_ADDRCONFIG if no IPv4/IPv6 address is configured for any

    Fixes GH-698

  • Russian manual: Update aria2c.rst

    Patch from ITriskTI

  • Apply --retry-wait on 503 only

  • Ensure that lowest speed check is done even when download speed is 0

    Fixes GH-686

  • Document that -o is always relative to -d option

    Fixes GH-684

  • Allow larger ut_metadata size

    Fixes GH-681

  • mingw: Change FD_SETSIZE to 32768

    Fixes GH-678

  • Fix compile error on OS X

    Fixes GH-683


aria2 1.24.0

@tatsuhiro-t tatsuhiro-t released this Jun 15, 2016 · 177 commits to master since this release

Release Note

This release fixes several bugs. The new functionality is that when
options which is only applicable in waiting state are submitted to an
active download via RPC, the download is now automatically restarted
to reflect the changes. Previously, those options were just ignored.


  • BitTorrent: Allow 32KiB request

    It looks like the 32KiB is the default request size of python
    bittorrent client. Previously, aria2 only allowed maximum 16KiB

  • Don't unchoke peer which is not interested in us

  • Fix bug that evaluation of Peer::amChoking is negated

  • Faster seed/download on fast connection

  • Increase DHT task concurrency to 15

    Fix GH-653

  • Fixed mmap failure check with MAP_FAILED flag

    Fix GH-662

    Patch from suzker

  • Added file size overflow check for mmap on 32bit os

    Fix GH-662

    Patch from suzker

  • Use standard percent-encode for tracker request query

    Fix GH-659

  • mingw32: Gain privilege before opening files

    Fix GH-657

  • Restart active download to apply previously not applicable options

    Previously, we categorized options that can be used in
    aria2.changeOption RPC method into 2 categories. The options in one
    category can be applied on the fly, meaning that download continues
    to be active while applying options. Another category includes
    options which are only applicable when downloads are waiting or

    In this change, when active download is ordered to change options
    which only applicable in waiting or paused state, it is now paused,
    and then automatically restarted. Although we have limited number
    of download concurrency, the pause and restart is done atomically,
    and the download is inserted at the front of the queue, it is picked
    up immediately if the concurrency regulation allows.

    Fix GH-640 and GH-644