aria2 1.37.0

aria2 is a lightweight multi-protocol & multi-source command-line download utility. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink. aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.

Tags ftp sftp terminal internet bittorrent rcp scp download cpp
License GNU GPL
State stable

Recent Releases

1.37.014 Jan 2024 16:25 major bugfix: Fix header in --http-accept-gzip documentation by @richardnias in #1824 Fix typo in documentation, --help text by @h3xx in #1877 Update aria2c.rst by @ITriskTI in #1902 Allow empty dist name in bencode which is needed for hybrid torrent by @tatsuhiro-t in #1905 Better entropy for getRandomBytes by @tatsuhiro-t in #1907 Deal with missing nproc on macos by @tatsuhiro-t in #1924 Bump actions by @tatsuhiro-t in #1923 Bump workflow ubuntu by @tatsuhiro-t in #1929 Add missing include to WinTLSSession.h by @hmartinez82 in #1943 Fix undefined behavior/crash in GZipEncoder by @himikof in #1970 Fix Metalink4 parsing with foreign namespaces by @himikof in #1969 fix wrong dht.dat binary file structure in docs by @yixinBC in #2068 Increase ByteArrayDiskWriter maximum size by @kelson42 in #1893 Minor grammar improvements by @nkh0472 in #1804 Fix static link failure against libssh2 by @tatsuhiro-t in #2088 Update Dockerfile.mingw by @tatsuhiro-t in #2089 Prefer random number generator from crypto libraries by @tatsuhiro-t in #2091 android(ndk r23) has timegm by @FH0 in #1822 Add Dockerfile.android by @tatsuhiro-t in #2092 Remove deprecated std::unary_function and std::binary_function by @tatsuhiro-t in #2093 Update wslay by @tatsuhiro-t in #2094 Fix test errors with ubsan by @tatsuhiro-t in #2095 ci: Build with gnutls by @tatsuhiro-t in #2096 ci: Build mingw image by @tatsuhiro-t in #2097 Revert "ci: Build mingw image" by @tatsuhiro-t in #2098 Fix overflow by @tatsuhiro-t in #2099 Make releases with docker by @tatsuhiro-t in #2100 Dockerfile.mingw: Parallel build by @tatsuhiro-t in #2101 Dockerfile.android: Add dpkg-dev for dpkg-architecture by @tatsuhiro-t in #2102 Dockerfile.mingw: Remove deprecated libssh2 configure flags by @tatsuhiro-t in #2103 Dockerfile.mingw: Update how to get aria2c.exe from a container by @tatsuhiro-t in #2104 Update sphinx_rtd
1.36.022 Aug 2021 03:15 minor feature: Update wslay . Bump Windows build dependencies. . Bump android build dependencies. . segfault when time_t is 64bit on 32bit arch. Patch from Natanael Copa GH-1666 . Updates the make_bash_completion script to Python3. Patch from sleepymac GH-1672 . Prevent corrupt downloads after app and/or system crash. Patch from Ali MJ Al-Nasrawy GH-1644 . Reset sessionDownloadLength and sessionUploadLength on download start. GH-1486 . AppleTLS: Add TLSv1.3 support.
1.35.006 Oct 2019 03:45 minor feature: Update mingw build dependencies GH-1469 . Update android build dependencies. Update android build dependencies. Use android NDK r20 and build aarch64 binary. GH-1467 . Drop SSLv3.0 and TLSv1.0 and add TLSv1.3. TLSv1.3 support is added for GNUTLS and OpenSSL. GH-1385 . Platform: compilation without deprecated OpenSSL APIs. Patch from Rosen Penev GH-1315 . Remove linux getrandom and use C++ stdlib instead. GH-1306 . Don't send Accept Metalink header if Metalink is disabled. GH-1300 . gnutls: that commonName is always empty. GH-1214 . openssl API version logic for libressl 2.7.x. Patch from Ben Chaney GH-1213 . build failure when InternalDHKeyExchange is used.
1.34.016 May 2018 03:16 minor feature: mingw: Use SetFileTime to avoid DST adjustment GH-1079 . UnknownLengthPieceStorage: return piece length. show something in console status when downloading items with unknown content length Patch from kwkam GH-1065 . WinConsoleFile: colour properly. Patch from kwkam GH-1058 . util: also detect xdg_ env variables on windows. so if people like to keep FHS they could define XDG_ for it Patch from kwkam GH-1057 . MacOS: Allocate once (apfs compat). . that signal handler does not work with libaria2. This commit the that signal handler does not work with libaria2 when aria2::RUN_ONCE is passed to aria2::run(). GH-1053 . Retry on HTTP 502. Patch from nicolov GH-1038.
1.33.109 Nov 2017 03:16 minor feature: Mingw: high CPU usage in BitTorrent downloads This commit high CPU usage in BitTorrent downloads. Only Mingw build is affected by this. Thank you kwkam for identifying the cause of the, and helping Deging this patch.
1.33.018 Oct 2017 03:16 minor feature: Include arm in a filename of android zip . Upgrade base image of Dockerfile.mingw to ubuntu:16.04. . wintls: Potential for undecrypted read. GH-1021 . libaria2: Return last error code from DownloadHandle::getErrorCode. GH-991 . Windows: pass writefds also as exceptfds to select(). winsock notifies connect() failures on exceptfds instead of writefds. GH-969 GH-975 . libuv: use pkg-config. . FeatureConfig: align text. . Update Dockerfile.mingw. avoid docker cache when using git Patch from qweaszxcdf GH-970 . 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 GH-947 . OSX: Allow to specify a build. . OSX: update c-ares. . Docs, libaria2 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, 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 GH-941 . 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. GH-909 . regression in bfc54d0. Don't save control file if --auto-save-interval is 0. GH-917 . infinite loop when file is not found.
1.32.018 May 2017 16:05 minor feature: Clarify --max-concurrent-downloads option GH-833 . compile error with toolchain which lacks IPV6_TCLASS. GH-895 . Log directed URI in notice log level. GH-884 . typo. Patch from Tse Kit Yam GH-879, GH-899 . Spelling Patch from klemens. GH-870 . Remove unused Android parts. These parts where unused after merging#736 Patch from Fredrik Fornwall GH-868 . Save control file early. GH-859 . 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 this by changing the links to point to the newest versions. Patch from Micha? Le?niewski GH-860 . Propagate disk full error on pre-allocation to last error code. GH-856.
1.31.017 Jan 2017 03:16 minor feature: Better error message when local file status cannot be retrieved GH-836. . 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. GH-823. . Add option content-disposition-default-utf8. Patch from JimmyZ. GH-813.
1.30.016 Dec 2016 03:16 minor feature: Mingw: Use sqlite 3.15.2. That --disable-websocket causes build error. That lower bound of optimize-concurrent-downloads becomes 1. GH-798. . Print DHT nodes with -S option. GH-795. . Take into account address family when resolving DHT node address. GH-794. . Allow block device file to -i option. GH-785. . 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. GH-780 . --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. GH-775. . 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 tar
1.29.016 Nov 2016 14:25 minor feature: WinTLS: busy loop on write error GH-767. . Support 1xx non-final response. GH-763. . Update wslay. GH-764. . Don't download piece which is filtered out (e.g., --select-file). This commit the that piece which is not requested by. --select-file is downloaded in multi-file Web-Seeding. GH-769.
1.28.018 Oct 2016 00:25 minor feature: Restore LTLIBINTL in src/Makefile.am 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 Default. . -Wexpansion-to-defined warning with clang-3.9. The error message was: Warning: macro expansion producing 'defined' has undefined behavior. -Wexpansion-to-defined . Http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20160118/147239.html. . That file name is not logged with --conditional-get. GH-742.
1.26.130 Aug 2016 02:45 minor feature: 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 Hold.
1.26.021 Aug 2016 00:25 minor feature: aria2mon: Replace client.call with local method Patch from Florian Gamböck. . Reorder a note section in aria2c.rst. Patch from Artur Petrov. 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. Dockerfile.raspberrypi to correctly decompress expat archive. Patch from Char. . Enable ccache in travis-ci. Speeds up the build most of the time. GH-710. . Enable OSX/macOS build for travis. GH-711. 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 your scripts accordingly. GH-709. . Log number of items loaded from input file. Link external libraries to libaria2 with --enable-libaria2. GH-707. . Allow seconds for seed-time (fractional minutes). Patch from Sébastien Cabaniols. GH-704.
1.25.017 Jul 2016 03:19 minor feature: 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. . that causes bogus EOF connection failure in BitTorrent downloads. frequent interested/not interested message transmission. frequent choke/unchoke message transmission. Try to use available URI if all pooled requests are sleeping. Update expat in OSX build. GH-694. . aria2mon: Add --secret option. GH-700. . Set server status error on network failure in server performance profile. Disable AI_ADDRCONFIG if no IPv4/IPv6 address is configured for any. interface 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. GH-686. . Document that -o is always relative to -d option. GH-684. . Allow larger ut_metadata size. GH-681. . mingw: Change FD_SETSIZE to 32768. GH-678. . compile error on OS X. GH-683.
1.24.017 Jun 2016 14:45 minor feature: BitTorrent: Allow 32KiB request It looks like the 32KiB is the default request size of python. Bittorrent client. Previously, aria2 only allowed maximum 16KiB Request. . Don't unchoke peer which is not interested in us. That evaluation of Peer::amChoking is negated. Faster seed/download on fast connection. Increase DHT task concurrency to 15. GH-653. . Mmap failure check with MAP_FAILED flag. GH-662. Patch from suzker. . Added file size overflow check for mmap on 32bit os. GH-662. Patch from suzker. . Use standard percent-encode for tracker request query. GH-659. . Mingw32: Gain privilege before opening files. 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 Paused. 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. GH-640 and GH-644.
1.23.016 May 2016 15:05 minor feature: Simplify cache write The previous cache write routine was too complex. I'm sure I can. rewrite it to more elegantly. But the primary motivation of this complex logic is for disk activity reduction on Windows 7, and I observed it on my old IDE disk. I checked it again recently, and there is no difference between with and without this complex logic. For this reason, it was removed. Will revert this change if many of users are not happy with this. . Allow subsecond value in ns cookie.txt file's expiry time field. GH-655. . Adjust chromium cookie time. import-po: iterate on glob, not ls output. Patch from Mingye Wang. . Add --stderr option to redirect all stdout log output to stderr. GH-638. . Add "hide" to --download-result option. GH-639. . downloaded metaurl torrent filename. Add a little bit of color to have a better visual of important. informations Patch from rotor. . Update README URLs based on HTTP redirects. Patch from ReadmeCritic. . Relocate from github.com/tatsuhiro-t/aria2 to github.com/aria2/aria2. GH-602. . mingw: Defer the falloc warning until falloc is specified by option. GH-594. . Add bittorrent key to aria2.tellStopped status. GH-612. . Addsystem.listNotifications RPC method. Merges GH-620. Patch from Sonny Piers. . Report CheckIntegrity info in tellStatus. Adds verifiedLength to tellStatus. Reports the length of data that. has been verified of the current RequestGroup being verified. Adds verifyPending to tellStatus. Reports if the RequestGroup has a verification of integrity pending. GH-561 Patch from Kurt Kartaltepe. . Adds verifiedLength to tellStatus. Reports the length of data that has been verified of the current RequestGroup being verified. Adds verifyPending to tellStatus. Reports if the RequestGroup has a verification of integrity pending.
1.22.017 Apr 2016 18:33 major feature: Add description about possible fragmentation with --file-allocation=trunc. Make single-entry metalink download with multi-file torrent work. Add all contributor's names in AUTHORS. Ignore floating number in torrent file. Added support for a dynamic management of the number of concurrent. downloads as a function of the overall bandwidth observed This change adds --optimize-concurrent-downloads option. Patch from oliviercommelarbre. . Add --stream-piece-selector=random.