Latest release

aria2 1.34.0

@tatsuhiro-t tatsuhiro-t released this May 15, 2018 · 10 commits to master since this release

Release Note

This release fixes several bugs. See Changes for details.


  • mingw: Use SetFileTime to avoid DST adjustment


  • UnknownLengthPieceStorage: return piece length

    show something in console status when downloading items
    with unknown content length

    Patch from kwkam


  • WinConsoleFile: fix colour properly

    Patch from kwkam


  • util: also detect xdg_* env variables on windows

    so if people like to keep FHS they could define XDG_* for it

    Patch from kwkam


  • MacOS: Allocate once (apfs compat)

  • Fix bug that signal handler does not work with libaria2

    This commit fixes the bug that signal handler does not work with
    libaria2 when aria2::RUN_ONCE is passed to aria2::run().


  • Retry on HTTP 502

    Patch from nicolov


aria2 1.33.1

@tatsuhiro-t tatsuhiro-t released this Nov 8, 2017 · 49 commits to master since this release

Release Note

This release fixes a bug that causes high CPU usage in mingw build.


  • mingw: Fix high CPU usage in BitTorrent downloads

    This commit fixes high CPU usage in BitTorrent downloads. Only
    mingw build is affected by this bug.

    Thank you kwkam for identifying the cause of the issue, and helping
    debugging this patch.

aria2 1.33.0

@tatsuhiro-t tatsuhiro-t released this Oct 17, 2017 · 49 commits to master since this release

Release Note

This release fixes several bugs, and add new features.


  • Include arm in a filename of android zip

  • Upgrade base image of Dockerfile.mingw to ubuntu:16.04

  • wintls: Potential fix for undecrypted read


  • libaria2: Return last error code from DownloadHandle::getErrorCode


  • Windows: pass writefds also as exceptfds to select()

    winsock notifies connect() failures on exceptfds instead of

    Fixes GH-969
    Fixes GH-975

  • libuv: use pkg-config

  • FeatureConfig: align text

  • Update Dockerfile.mingw

    avoid docker cache when using git

    Patch from qweaszxcdf


  • Add --peer-agent option

    Add --peer-agent for setting the version/user agent used in the
    extended handshake protocol for bittorrent.

    Patch from Kurt Kartaltepe


  • OSX: Allow to specify a build

  • OSX: update c-ares

  • [Docs, libaria2] Fix type of obj pushed into options vector

    aria::KeyVals is a vector of pair of std strings, therefore the type
    of object being pushed should be std::pair<std::string,
    std::string>, however in the docs, the type of the said object is
    KeyVals. If one follows the docs, their code will fail to compile.

    Patch from geetam


  • AppleTLS: Silence cipher suite selection

  • Unbreak build OSX build

  • Update macOS versions

  • Add --bt-load-saved-metadata option

    Before getting torrent metadata from DHT when downloading with
    magnet link, first try to read file saved by --bt-save-metadata
    option. If it is successful, then skip downloading metadata from
    DHT. By default, this feature is turned off.


  • Fix regression in bfc54d0

    Don't save control file if --auto-save-interval is 0.


  • Fix infinite loop bug when file is not found

aria2 1.32.0

@tatsuhiro-t tatsuhiro-t released this May 17, 2017 · 92 commits to master since this release

Release Note

This release fixes several minor bugs, and spelling mistakes.


  • 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

    GH-879, GH-899

  • Spelling fixes

    Patch from klemens


  • Remove unused Android parts

    These parts where unused after merging

    Patch from Fredrik Fornwall


  • 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.

    Patch from Michał Leśniewski


  • Propagate disk full error on pre-allocation to last error code


aria2 1.31.0

@tatsuhiro-t tatsuhiro-t released this Jan 16, 2017 · 126 commits to master since this release

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 · 144 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 · 176 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 · 185 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 · 206 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 <linux/err.h> 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