Skip to content

Releases: aria2/aria2

aria2 1.20.0

15 Feb 16:10
release-1.20.0
Compare
Choose a tag to compare

Release Note

This release fixes lots of bugs. See the Changes section below.
There are new features in this release. We added "seeder" key in
aria2.tellStatus RPC response. We added system.listMethods RPC method
to return all RPC method supported. We added --max-mmap-limit option
to avoid mmap if total file size is greater than given size.

Changes

  • src/WinConsoleFile.cc: fix colour

    Set default foreground/background colour correctly

    Patch from kwkam

  • configure.ac: fix autoreconf error

    Use m4_ifdef so we do not have to install optional libraries

    Patch from kwkam

  • Don't inherit file descriptor to child process

    For non-Mingw32 build, set FD_CLOEXEC to file descriptors which live
    beyond function scope. For Mingw32 build, just pass false to
    bInheritHandles parameter of CreateProcessW.

  • Update Russian version documentation

    Patch from ITriskTI

  • Add "seeder" key to tellStatus RPC response

  • WinTLS: Fix hang because of buffered received data

    WinTLSSession buffers received decrypted data into its own buffer.
    If read is requested, it copies the data from its buffer. But if
    requested buffer size is less than decrypted buffer, some of the
    data is left in the buffer. Previously, we had no facility to check
    the existence of this pending data. If this data is the last
    requested data from remote server, we may end up waiting for read
    event even if we have already data in our buffer, which may cause
    hang. This commit fixes this issue by introducing function to
    return the buffered length in TLSSession. SocketCore also provides
    the same function, which delegates to TLSSession object.

  • Add --max-mmap-limit option

    Set the maximum file size to enable mmap (see --enable-mmap
    option). The file size is determined by the sum of all files
    contained in one download. For example, if a download contains 5
    files, then file size is the total size of those files. If file size
    is strictly greater than the size specified in this option, mmap
    will be disabled.

  • mingw: Use SetFileValidData to make --file-allocation=falloc work

  • Retry with 504 status code

  • Increase DHT transaction ID from 2 to 4 bytes to avoid conflict

  • Update wslay

  • Add --enable-werror option to configure to enable warning flags

  • Don't modify user variables (e.g., CFLAGS, LIBS, etc)

  • Improve error message when loading pkcs12 file failed

  • Updated dependency and source url's

    The RaspberryPi Dockerfile had some out-of-date dependency packages
    and was downloading an outdated aria2 source from Sourceforge, which
    resulted in a build for version 1.19.0. The new
    fetch-latest-release-from-GitHub script I've cooked up should always
    work as long as GitHub doesn't change their API and aria2's platform
    agnostic releases follow the "{version number}.tar.bz2" naming
    format.

    Patch from c3mb0

  • Reduce delay in tracker request

    We eliminated 1 second delay between completion of name resolution
    for tracker request and time when it is actually issued. We also
    elimited 1 second delay after last torrent download exists and it is
    told to DHTInteractionCommand.

  • Disable IPv6 on non-async NameResolver if configuration wants

  • Fix mysterious 1 second delay with async DNS

  • Fix bug that UDP port was incorrectly used in UDP tracker announce request

  • Refactor HttpRequest

    This also makes comparison performed when replacing builtin header
    field with user-defined one case-insensitive.

  • Send Want-Digest as per RFC 3230

  • Try all found address set to bind sockets with --multiple-interface

    Fixes GH-523

  • Replace sourceforge references with aria2.github.io

  • Add system.listMethods RPC method

    system.listMethods just returns the available RPC method names. It
    can be executed without secret token, because it just returns the
    method names, and does not alter anything.

    See GH-437

  • Support content-range from non-compliant server

    See GH-509

  • Reduce UDP tracker request timeout

    See GH-507

  • Apply --retry-wait when retrying after 404

    Previously, --retry-wait was not used when retrying after 404
    (--max-file-not-found). The retry was done without delay. Also the
    maximum retry count (--max-retries) was ignored when retrying with
    404.

    This commit makes --retry-wait apply for retrying with 404 as well.
    It also combines --max-retries and --max-file-not-found. When
    retrying with 404, it is counted toward retry count.

aria2 1.19.3

06 Dec 14:24
release-1.19.3
Compare
Choose a tag to compare

Release Note

This release fixes lots of bugs. See the Changes section below.

Changes

  • Fix bug that pause/unpause seeding torrent prevents new downloads
    from starting

    Previously, with --bt-detach-seed-only, when user issued pause and
    unpause command to seeding torrent, and it was started again, and it
    immediately got seeding status, but aria2 did not start new download
    waiting in the queue. This commit fixes this bug.

    See GH-490

  • Add --bt-enable-hook-after-hash-check option

    This option sets flag which allows hook command invocation after
    hash check (see -V option) in BitTorrent download. By default, when
    hash check succeeds, the command given by --on-bt-download-complete
    is executed. To disable this action, give false to this option.

  • Add --socket-recv-buffer-size option

    Set the maximum socket receive buffer in bytes. Specifing 0 will
    disable this option. This value will be set to socket file
    descriptor using SO_RCVBUF socket option with setsockopt() call.

    See GH-487 about the usecase of this option

  • Disable --deferred-input when --save-session is used together

    With --deferred-input=true, aria2 only reads input file to fill
    active download slots, while keeping input file open. Meanwhile,
    --save-session saves all download info inside memory, but this does
    not take into account of unread item in input file. This will lead
    to lose input data in saved session file. Also current BufferedFile
    implementation used to read/write input/output file take a lock on
    Windows. This effectively prevents session serializer from writing
    session data to the same file which is still kept open because of
    --deferred-input. See GH-493

  • base32: decode lowercased characters as well

    This fixes the bug that magnet URI with lowercased btih is treated
    as malformed.

  • mingw: Use GetFileSize to get file size

    _wstat family does not work with symbolic links. They always
    returns size 0. To workaround this, we now use GetFileSize to get
    file size. To do that, we need to first obtain file HANDLE, which
    is a bit tedious because of the messy interface of CreateFileW, but
    we have no way to get around it.

  • Fix bug that file allocation=trunc does not work with Windows
    symlink

  • Send the last error message as part of tellStatus RPC response

    Patch from Jarda Snajdr

  • Don't enable mmap if file allocation is disabled

    Without file allocation, we cannot map file because file length
    could be zero.

    This could fix bug reported at GH-478

  • Evict timed out pooled socket periodically

    Previously we only scanned pool socket to check they are timed out
    when we pooled another socket. This means that pooled socket is not
    closed long time (stays in CLOSE-WAIT state) if we don't pool any
    more socket. In this commit, we now check pooled socket
    periodically (30 seconds) to avoid the sockets hanging in CLOSE-WAIT
    state long time.

    See GH-477

  • Don't write control file if content is not changed from previous one

    This is desirable so that we don't have to wake up disk if control
    file is not changed, and it is not have to be written again. We use
    the same method (SHA1 hash) to check the content is the same. The
    limitation is the hash is stored in memory, so we have to write the
    first time in each session.

    See GH-382

  • Remove content-length and content-range if transfer-encoding is
    given

    See GH-473

  • Retry after 404 status if --max-file-not-found > 0

aria2 1.19.2

04 Oct 09:39
release-1.19.2
Compare
Choose a tag to compare

aria2 1.19.2

Release Note

This release fixes the bug that progress summary is not shown timely.

Changes

  • Fix bug that progress summary is not shown timely

aria2 1.19.1

27 Sep 15:37
release-1.19.1
Compare
Choose a tag to compare

aria2 1.19.1

Release Note

This release fixes TLS handshake error with servers which only support
RSA-SHA1 signature algorithm. We removed RSA-SHA1 for enchanced
security, but many users reported there were servers which could not
talk aria2 1.19.0, so added it again for compatibility reasons. For
Windows build, we fixed potential infinite loop bug when TLS is used.

We changed the location where dht.dat and aria2.conf are looked up.
The aria2 manual page described details. Basically we now follow XDG
specification (http://standards.freedesktop.org/basedir-spec/latest/).
For dht.dat, the default location is $XDG_CACHE_HOME/aria2/ directory.
For aria2.conf, the default location is $XDG_CONFIG_HOME/aria2/
directory. To keep the current user configuration working, if aria2
detects dht.dat under $HOME/.aria2/ directory, it is used instead.
Similarly, if aria2.conf exists under $HOME/.aria2/ directory, it is
used instead.

Previously, we return 500 HTTP status if RPC method execution
encountered error. Now it returns with 400 HTTP status with error
code. This is more natural because server processed request and found
an error, and returned error reply correctly. This is not something
server crashed or something. Also, there is RPC libraries which
throws exception if it sees 5XX status code, where 400 is better
because we can examine the error.

Changes

  • Update README.android

    Providing some workarounds about CA certificates and standard output

    Patch from amtlib-dot-dll

  • Return 400 HTTP status code if exception was caught while executing
    RPC method

    Previously, we returned 500 HTTP status code. I think the found in
    RPC level, not in HTTP protocol, so 500 is not appropriate.

  • WinTLS: Fix potential infinite loop

  • Fix on-download-error is executed even if download succeeded

  • Update Dockerfile.mingw

    Patch from Adam Baxter

  • Increase --select-file upper bound to 1m for torrent containing lots
    of files

  • Fix busy loop with --dry-run and 4xx response for URI listed in
    metalink

    See GH-430

  • Update sqlite in OSX build to 3.8.10.2

  • Make LibuvEventPoll compatible with the latest libuv again

  • gnutls: Allow SIGN-RSA-SHA1 for compatibility reason

  • Make script compatible with both Python 2 and 3

    Patch from Vasilij Schneidermann

  • Make config and cache files conform to XDG

    See http://standards.freedesktop.org/basedir-spec/latest/ for
    further details. This implementation decides the default based on
    whether a file exists at the legacy location, if it doesn't, it
    picks the XDG-conforming location instead.

    Patch from Vasilij Schneidermann

  • ftp, sftp: Fix heap-after-free bug on exception

  • ftp: Fix timeout when reusing FTP connection

  • Various MinGW-w64 build improvements

    • Fix detection of localtime_r and asctime_r on MinGW-w64
    • Fix linking with libintl on MinGW-w64

    Patch from David Macek