github aria2/aria2 release-1.19.3
aria2 1.19.3

Release Note

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


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

See GH-473

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