NEWS 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538
  1. aria2 1.18.6
  2. ============
  3. Release Note
  4. ------------
  5. This release fixes several bugs reported in github issues and adds a
  6. feature to make RPC authentication more resilient to certain attacks.
  7. New option --pause-metadata is added. The explanation is a bit log,
  8. so check the changelog and manual. The session is now only saved if
  9. there are changes from the last saved state.
  10. From this release, MinGW32 build uses Windows native TLS
  11. implementation and no longer use OpenSSL library.
  12. Changes
  13. -------
  14. * Disard cache when checking checksum
  15. This will slow down checksum checking but does not thrash cache.
  16. * Compat with libuv 0.11 (Unstable)
  17. Fixes #241
  18. * Drop WinMessageDigestImpl.
  19. The algorithms the `CryptProv` on Windows supports does not
  20. currently include SHA-224, so there is a "dark spot" in this
  21. implementation. Also on Win XP < SP3, most of the SHA-2 family is
  22. not actually supported. All other implementation provide support
  23. for MD5, SHA-1 and all of the SHA-2 family, hence drop the
  24. incomplete WinMessageDigest implementation in favor of any other
  25. supported implementation (at least the internal implementation is
  26. always available at compile-time).
  27. * Add --pause-metadata option
  28. This option pauses downloads created as a result of metadata
  29. download. There are 3 types of metadata downloads in aria2: (1)
  30. downloading .torrent file. (2) downloading torrent metadata using
  31. magnet link. (3) downloading metalink file. These metadata
  32. downloads will generate downloads using their metadata. This option
  33. pauses these subsequent downloads.
  34. * Improve compiler/platform/libs information in logs
  35. Add and use usedCompilerAndPlatform(). This adds compiler
  36. information to INFO logs and the --version output, and may be
  37. helpful when trying to diagnose/reproduce user-reported problems.
  38. Also make INFO logs include usedLibs() output.
  39. Closes #235
  40. * Fix use-after-free on exit with multi-file torrent download + DHT
  41. DefaultPieceStorage may be referenced by one of DHT task (e.g.,
  42. DHTPeerLookupTask), after RequestGroup was deleted, and even after
  43. RequestGroupMan was deleted. DefaultPieceStorage has a reference to
  44. MultiDiskAdaptor which calls RequestGroupMan object on destruction.
  45. So when DHT task is destroyed, DefaultPieceStorage is destroyed,
  46. which in turn destroys MultiDiskAdaptor. DHT task is destroyed
  47. after RequestGroupMan was destroyed, MultiDiskAdaptor will use now
  48. freed RequestGroupMan object, this is use-after-free.
  49. * Fix bug that zero length file is not opened when flushing cache
  50. This bug was only seen when MultiDiskAdaptor was used.
  51. * Support PREF_DIR change for Metalink files
  52. Reworked previous commit adeead6f0396e2f8551d1182972e277728fd6c8b,
  53. and now support changing PREF_DIR for Metalink downloads.
  54. * Fix assertion failure when dir option of paused HTTP/FTP download is
  55. changed
  56. When the directory is changed via aria2.changeOption RPC method, we
  57. directly change first FileEntry's path using FileEntry::setPath().
  58. If there is no PREF_OUT option is given, basically file name is
  59. unknown, so we just set empty string and let the next run determine
  60. the correct file name and new directory is applied there. But
  61. previous code does not reset length property of FileEntry, so the
  62. unexpected code path is taken when unpaused and its path expects
  63. path is not empty string. This commit fixes this issue by setting
  64. length to 0 using FileEntry::setLength().
  65. * Save session only when there is change since the last serialization
  66. This is a slight optimization not to cause useless disk access.
  67. This only applies to saving session automatically (see
  68. --save-session-interval). aria2.saveSession and serialization at
  69. the end of the session are always performed as before.
  70. When serialization, we first check that whether there is any change
  71. since the last serialization. To do this, we first calculate hash
  72. value of serialized content without writing into file. Then compare
  73. this value to the value of last serialization. If they do not
  74. match, perform serialization.
  75. * Fix (unknown length) downloads larger than 2GiB
  76. Closes #215
  77. * Fix F_PREALLOC based allocation on some OSX versions
  78. * Use index.html as filename for conditional-get when file is missing
  79. in URI
  80. Previously we disabled conditional-get if file part is missing in
  81. URI. But we use constant string "index.html" in this case, so we
  82. can do the same to determine the modification time. In this patch,
  83. if we have file part in URI, we are not going to set absolute file
  84. path in FileEntry, since it prevents content-disposition from
  85. working.
  86. * Always add README.html to dist_doc_DATA
  87. rst2html is required to produce README.html from README.rst. We
  88. include generated README.html to distribution. And rst2html is not
  89. required when compiling sources in distribution and always
  90. README.html is available.
  91. * Validate token using PBKDF2-HMAC-SHA1.
  92. This change should make token validation more resilient to:
  93. - timing attacks (constant time array compare)
  94. - brute-force/dictionary attacks (PBKDF2)
  95. Closes #220
  96. * Add --disable-websocket configure option
  97. * mingw32: Enable wintls and compile with GMP
  98. By enabling wintls, we can use Windows certificate store to validate
  99. server's certificate. Previously, we built windows build using
  100. openssl and since we don't bundle CA certificates, aria2 fails to
  101. validate server's certificate unless user setups their CA
  102. certificates. GMP provides fast big integer calculations, whic is
  103. used in BitTorrent encryption.
  104. * AppleTLS: Enable BEAST mitigations in ST
  105. Only available in 10.9+, but since we might be building on a
  106. previous version but running on 10.9+, always try to set the option.
  107. * WinTLS: Accept chains with no revocation information.
  108. This is kind what browser do anyway (IE, Firefox, Chrome tested),
  109. what AppleTLS does, what GnuTLS does and what OpenSSL
  110. does. Actually, most browsers will also be OK with the CRL/OCSP
  111. provider being offline. WinTLS will still fail in that case.
  112. Should revocation information be available in the trust chain (CRL
  113. or OCSP) the certificate still will be checked!
  114. "Real" CAs, aka. those provided by the OS or system CA bundle,
  115. usually provide revocation information and are thus still checked.
  116. It should be mostly (only?) custom (organization) CAs that lack
  117. revocation information, but those users might want to use aria2 in
  118. their intranets and VPNs anyway ;)
  119. See #217
  120. * Fix GnuTLS 2.x compatiblity
  121. Closes GH-216
  122. * AppleTLS: Use newer, non-deprecated API in 10.8+
  123. aria2 1.18.5
  124. ============
  125. Release Note
  126. ------------
  127. This release fixes BitTorrent download failure on Mingw build.
  128. Changes
  129. -------
  130. * Ignore error when setting DSCP value
  131. Setting DSCP is additional feature and failure to enable it should
  132. not abort download entirely. This change fixes the bug that windows
  133. build does not perform bittorrent downloads.
  134. aria2 1.18.4
  135. ============
  136. Release Note
  137. ------------
  138. This release adds new RPC authorization mechanism using --rpc-secret
  139. option. The existing --rpc-user and --rpc-passwd options are now
  140. deprecated, and all applications using RPC API is strongly encouraged
  141. to migrate to the new mechanism. See RPC INTERFACE section in aria2
  142. manual page for the details. The new RPC method, aria2.saveSession,
  143. was added, which tells aria2 server to save session file immediately.
  144. There are several enhancements and bug fixes. See the changes for the
  145. details.
  146. Changes
  147. -------
  148. * Added support for RPC channel encryption in aria2rpc
  149. Patch from David Macek
  150. * Add aria2.saveSession RPC method
  151. This method saves the current session to a file specified by
  152. --save-session option. This method returns "OK" if it succeeds.
  153. * Add numStoppedTotal key to aria2.getGlobalStat() RPC method response
  154. It shows the number of stopped downloads in the current session and
  155. not capped by --max-download-result option. On the other hand, the
  156. existing numStopped key also shows the number of stopped downloads,
  157. but it is capped by --max-download-result option.
  158. * Better handling of 30x HTTP status codes
  159. Reference: http://greenbytes.de/tech/tc/httpredirects/
  160. * Implement new RPC authorization using --rpc-secret option
  161. Add future deprecation warning to --rpc-user and --rpc-passwd. Warn
  162. if neither --rpc-secret nor a combination of --rpc-user/rpc-passwd
  163. is set.
  164. * Add --enable-color option to enable/disable terminal color output
  165. * Add DSCP support
  166. * gnutls: Don't fail handshake if returned error is not fatal
  167. * Add workaround GnuTLS bug with OCSP status extension and
  168. non-blocking socket
  169. GnuTLS version 3.1.3 - 3.1.18 and 3.2.0 - 3.2.8, inclusive, has this
  170. bug. For these versions, we disable OCSP status extension.
  171. * Make GnuTLS log level dependent on the aria2 ones
  172. aria2 1.18.3
  173. ============
  174. Release Note
  175. ------------
  176. This release fixes the bug which may cause assertion failure after
  177. multi-file downloads (e.g., multi-file metalink or torrent) are
  178. performed several times due to the bad handling of --bt-max-open-files
  179. option.
  180. Changes
  181. -------
  182. * Fix crash if unpause failed before assigning BtProgressInfoFile
  183. object
  184. * Enable and check PIE in makerelease-osx
  185. * Fix bug that numOpenFile_ is not reduced when MultiDiskAdaptor is
  186. deleted
  187. This bug caused assertion error in
  188. RequestGroupMan::ensureMaxOpenFileLimit
  189. aria2 1.18.2
  190. ============
  191. Release Note
  192. ------------
  193. This release fixes the wrong handling of return value of fork(), which
  194. leads to high CPU usage. The progress readout has some color output.
  195. Mingw32 build now receives colorized output. Mingw32 build now can
  196. read unicode command-line arguments. The build script of OSX was
  197. rewritten. The --bt-max-open-files now limits the number of opened
  198. file globally for multi-file downloads instead of per download basis.
  199. Changes
  200. -------
  201. * Remove the outdated, broken build_osx_release.sh
  202. * Initial revision of the a new OSX release Makefile
  203. * Allow using libgmp with AppleTLS/WinTLS
  204. * Fix crash when metaurl contains unsupported URI or text
  205. * Fix bad fork() return value handling
  206. * Use some colors in progress reports (where available)
  207. * Implement basic color support for the Windows console
  208. Only \033[*m (SGR) is supported, with a 16+16 color terminal.
  209. * AppleTLS: Implement PKCS12 loading.
  210. * Limit number of opened file globally with --bt-max-open-files option
  211. This change changes the behavior of --bt-max-open-files. Previously,
  212. it specifies the maximum number of opened files for each multi-file
  213. download. Since it is more useful to limit the number globally, the
  214. option now specifies the global limit. This change suggests that
  215. aria2.changeOption() method now ignores --bt-max-open-files and
  216. aria2.changeGlobalOption now reads it and dynamically change the
  217. limit.
  218. * Don't fail multiple concurrent dl same file if auto-file-renaming is
  219. enabled
  220. * mingw32: Use CommandLineToArgvW() and GetCommandLineW() to read
  221. cmd-line args
  222. This change enables aria2 to read unicode characters in
  223. command-line.
  224. aria2 1.18.1
  225. ============
  226. Release Note
  227. ------------
  228. This release fixes the percent-encoding bug which affects file name
  229. encodings. It adds PKCS12 support in certificate import. It also adds
  230. experimental internal implementation of message digest functions, ARC4
  231. cipher and bignum. It means that no external libraries are required to
  232. build BitTorrent support, but this feature is still marked as
  233. experimental. This release also fixes the android build with NDK r9.
  234. Changes
  235. -------
  236. * LibsslTLSContext: Remove weak cipher suite
  237. * AppleTLS: Enable --certificate
  238. * util::percentEncodeMini: Fix regression bug removed unsignedness
  239. srange-based for around std::string is convenient but several
  240. functions depend unsigned char for correctness and readability.
  241. * Log exception; throw error if loading private key and/or certificate
  242. failed
  243. * Provide internal ARC4 implementation
  244. Now you can build bittorrent support without without external
  245. libraries, meaning you can skip libnettle, libgmp, libgcrypt, GnuTLS
  246. and OpenSSL on OSX (for now).
  247. * Internal implementation of DHKeyExchange
  248. Reusing a bignum (well, unsigned very-long) implementation I had
  249. lying around for years and just cleaned up a bit and brought to
  250. C++11 land.
  251. It might not be the most performant implementation, but it shoud be
  252. fast enough for our purposes and will go a long way of removing
  253. gcrypt, nettle, gmp, openssl dependencies when using AppleTLS and
  254. WinTLS (upcoming).
  255. * PKCS12 support in --certificate and --rpc-certificate options.
  256. * Add --disable-ssl configure option
  257. * Add internal md5 and sha1 message digests
  258. * Fix AppleMessageDigestImpl use with large data
  259. * Set old cookie's creation-time to new cookie on replacement
  260. As described in http://tools.ietf.org/html/rfc6265#section-5.3
  261. * Fix link error with Android NDK r9
  262. Since Android ndk r9, __set_errno is deprecated. It is now defined
  263. as inline function in errno.h. The syscall assembly calls
  264. __set_errno, but since libc.so does not export it, the link
  265. fails. To workaround this, replace all occurrences of __set_errno
  266. with a2_set_errno and define it as normal C function.
  267. aria2 1.18.0
  268. ============
  269. Release Note
  270. ------------
  271. This release changes the default disk cache size to 16 MiB. To change
  272. the default size, --with-disk-cache configure option was added. Now
  273. used URIs are also saved by --save-session option. The control file is
  274. now always saved if --force-save is given. The ctrl-c handling on
  275. Mingw build was improved. The internal intl library is no longer
  276. supplied. From this release, C++11 compiler is required to build aria2
  277. executable. For gcc, at least 4.6.3 is required.
  278. Changes
  279. -------
  280. * Use AM subdir-objects
  281. Doing so in AM_INIT_AUTOMAKE seems to be the most compatible way of
  282. doing so.
  283. Closes GH-120
  284. * AM_SILENT_RULES([yes]) with backwards-compatiblity
  285. Supported since automake-1.11. There is no point in having the very
  286. verbose compile stuff running about, which cannot even silenced
  287. properly with `make -s` by default. Otherwise, `make V=1` or
  288. `--disable-silent-rules` are your friends
  289. * Fix automake-1.14 am_aux_dir
  290. AC_USE_SYSTEM_EXTENSIONS will cause AC_PROG_CC, which is overridden
  291. by automake-1.14, which will then init (part) of automake, in
  292. particular am_aux_dir expansion, which in turn relies on ac_aux-dir,
  293. which is not initialized at this point, and thus: certain doom (or
  294. fun, depending on your POV and mood :p)
  295. Hence call AC_USE_SYSTEM_EXTENSIONS only after
  296. AM_INIT_AUTOMAKE. This, of course, caused a lot of related macro
  297. shuffling.
  298. Tested against automake-1.10 (OSX Lion/XCode version) and
  299. automake-1.14 (homebrew version)
  300. * Require external gettext for --enable-nls
  301. And stop using the internal flavor with ./intl
  302. * Make AX_CXX_COMPILE_STDCXX_11 test for -stdlib=libc++ via std::shared_ptr
  303. The clang shipped with OSX XCode and clangs not build enabling
  304. libcpp, will default to the libstdc++ headers and lib installed on
  305. the system. In the OSX case, that libstdc++ is the one bundles with
  306. gcc-4.2, which is far too old to provide all required C++11 types,
  307. such as std::shared_ptr. Hence, the C++11 check should try to
  308. compile a program with a C++11 type and try -stdlib=libc++ if the
  309. default lib fails to compile said program.
  310. * Make the configure check for C++11 compiler mandatory
  311. Remove stray "dnl", so that mandatory actually works with (my)
  312. autoreconf.
  313. * Always build doc/manual-src
  314. Should sphinx-build be not available AND the man file not be prsent,
  315. then just "touch" it into existence (and warn about that)
  316. * Win: Use SetConsoleCtrlHandler for SIGINT/SIGTERM
  317. * Implement a simple resource lock (threading)
  318. In this initial implementation Locks are no-ops on platforms other
  319. than Windows.
  320. * Check for sphinx-build during configure
  321. * Add --with-disk-cache configure option
  322. Enables packagers more fine grained control over the default value
  323. without having to mess with config files.
  324. See GH-115
  325. * Change defaults: Enable 16M disk cache by default.
  326. * Always save control file if --force-save is given
  327. * Set log level DEBUG for unittests
  328. * Check that C++ compiler supports override keyword
  329. If the compiler supports override, define CXX11_OVERRIDE as
  330. override, otherwise define it as empty. Use CXX11_OVERRIDE instead
  331. of override.
  332. * AppleTLS: Fix MessageDigestImpl
  333. * AppleTLS: Fix session CFRelease stuff
  334. * Use AX_CXX_COMPILE_STDCXX_11 macro to detect C++0x/C++11 support in
  335. compiler
  336. * Require -std=c++11 and use std::shared_ptr instead of SharedHandle
  337. * Join URI on redirect
  338. * Send HAVE message to the peer which the piece is downloaded from
  339. Historically, aria2 did not send HAVE message to the peer which the
  340. piece is coming from, thinking it is obvious that the peer knows we
  341. have the piece. But it is not obvious if one piece is download from
  342. more than 1 peers (e.g., end game mode). So it is better to send
  343. HAVE to all peers connected.
  344. * Improvements to --follow-torrent=false documentation.
  345. Patch from gt
  346. * SessionSerializer: Truly unique URIs
  347. Before, only spent uris where sanitized not to be contained within
  348. remaining uris. Change this so that each uri in the
  349. union(remaining,spent) get saved once at most. The order of the
  350. uris will won't be changed, with remaining uris going first followed
  351. by spent uris.
  352. Also avoid copying the uri std::strings around during dupe checking,
  353. usually resulting in better performance regarding CPU and space.
  354. * Make getOption RPC method return option for stopped downloads
  355. * SessionSerializer: Save spent URIs as well as remaining ones