aria2 1.19.3
============

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

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

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



aria2 1.19.0
============

Release Note
------------

This releases adds SFTP support, and fixes several bugs.  SFTP support
has been implemented using libssh2.  We added several new options.
--multiple-interface option is like --interface option, but can take
several interfaces.  They are used in round-robin manner, and it works
like link aggregation.  Previously, .netrc search path is fixed under
$HOME directory, and cannot be changed.  In this release, --netrc-path
option has been added to override the search path.  The runtime bug
concerning getrandom has been fixed in this release.  Previously if
download failed because checksum error, aria2 exited with error code 1
(unknown error).  Now it exits with dedicated error code 32.  We fixed
long outstanding bug that aria2 crashes when downloading multi-file
torrent.

Changes
-------

* android: Build and link with zlib

  Previously, we linked with zlib shipped with NDK, but it seems this
  is not part of NDK API, and thus could break our app.

* Allow netrc-path to be specified in the config file

  Adds --netrc-path to override default .netrc search path.  Patch
  from Ryan Steinmetz

* Exit with 32 status code if checksum verification failed

* Add SFTP support using libssh2

  aria2 can now download files via sftp protocol: aria2c sftp://....
  --ssh-host-key-md option is added to specify expected server's
  fingerprint.

* Added Dockerfile to cross complile aria2 for RaspberryPI (armhf)

  Patch from Igor Khomyakov

* multiple interface support for link aggregation

  Adds --multiple-interface option.  Patch from Sarim Khan

* Run on-bt-download-complete command when -V reports download finished

  Fixes GH-355

* Use dedicated DiskWriter in MultiDiskFileAllocationIterator

  We have to use dedicated DiskWriter instead of
  (*entryItr_)->getDiskWriter().  This is because
  SingleFileAllocationIterator cannot reopen file if file is closed by
  OpenedFileCounter.  Fixes GH-350

* Fix getrandom for system with libc not including errno or systems

  not supporting ENOSYS in the first place.  Fixes GH-347

* Don't send back rpc-secret option value in aria2.getGlobalOption RPC
  method

* Make libuv default off

  See GH-241 for discussion

* Fixed slow RPC response

  Fxies GH-345

* Fix getrandom interface detection

  Fixes GH-346
