NEWS 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446
  1. aria2 1.16.5
  2. ============
  3. Release Note
  4. ------------
  5. This release fixes the bug that invalid range error is thrown when
  6. requesting range starts from 0 in HTTP download.
  7. Changes
  8. -------
  9. * Fix bug that invalid range error when requesting range starting 0
  10. Since the change b782a56b, we use endOffsetOverride_ as the return
  11. value of getEndByte(). But aria2 does not send Range header field
  12. when range starts 0 (this is because some server returns error if it
  13. received Range: 0-), and the HttpRequest::isRangeSatisfied() checks
  14. the equality of getEndByte() and the end byte in response header and
  15. fails. The fix is send Range header if getEndByte() is set.
  16. aria2 1.16.4
  17. ============
  18. Release Note
  19. ------------
  20. This release fixes the bug that active downloads are not saved with
  21. --save-session-interval and the bug that aria2 hangs when size of
  22. download result exceeds its maximum. BitTorrent UDP tracker support
  23. was added. If the filename specified using --save-session ends with
  24. ".gz", aria2 stores the session file in gzipped form. The -i option
  25. can handle this gzipped file as well as plain text file. 1.15.2 based
  26. Portuguese translated manual was added.
  27. Changes
  28. -------
  29. * Make configure argument meaning more consistent and obvious.
  30. Most other software uses --disable/--without for features it does
  31. build or at least check by default.
  32. Change aria2 configure options so that:
  33. * --enable-*: do not build by default, unless --enable specified
  34. * --disable-*: check and build by default, unless --disable specified
  35. * --with-*: do not use by default, unless --with specified
  36. * --without-*: check and use by default, unless without specified
  37. Contributed by Nils Maier
  38. * Allow for out-of-tree Sphinx builds
  39. Contributed by Nils Maier
  40. * Bring back datetime in console log
  41. * Run checksum check if -V and -c are used and file is completed
  42. With -c option, aria2 can continue download after the existing file
  43. position. If it is not completed, then after completion aria2 runs
  44. checksum checking if available. But if existing file has already
  45. been completed, then CreateRequestCommand exits without issuing
  46. checksum checking. And aria2 treats it download error because it
  47. needs checksum verification but it has not been done. This change
  48. fixes this by properly checking download state and issue checksum
  49. checking before CreateRequestCommand.
  50. * Support for gzipped -i and --save-session
  51. Saved sessions may very large, as in hundreds and even thousands of
  52. megabyte when dealing with large queues. Add support to save and
  53. reload sessions to gzipped files, when libz is available.
  54. The session serializer will output gzipped contents when the file
  55. ends with .gz, while the input file reader (UriListParser) will
  56. accept whatever is thrown at it.
  57. Document -i/--save-session gzip behaviour
  58. Contributed by Nils Maier
  59. * Do not use a virtual varargs function
  60. This stuff breaks in some compiler (configurations)
  61. Contributed by Nils Maier
  62. * Check for sys/signal.h and/or signal.h
  63. mingw-w64 does not actually have sys/signal.h, while OSX currently
  64. has a broken signal.h Better check the presence of both and use
  65. sys/signal.h if present, else signal.h
  66. Contributed by Nils Maier
  67. * Hygiene: Fix some clang warnings, mostly unused private members.
  68. Contributed by Nils Maier
  69. * Fix bustage on OSX with ./configure CC=cc CXX=c++ (clang)
  70. Contributed by Nils Maier
  71. * Do not reference RequestGroups longer than necessary
  72. There is an initial vector of SharedHandle<RequestGroup> to seed the
  73. DownloadEngine. This vector was however kept alive via main.cc ->
  74. MultiUrlRequestInfo up until the program exits, hence effetively
  75. leaking all initial RequestGroups and associated object instances.
  76. Hence, as a matter of dirty-workaround, drop the contents of that
  77. initial vector as soon as it is not required any longer.
  78. Contributed by Nils Maier
  79. * Detect console with on Windows
  80. Contributed by Nils Maier
  81. * Fix infinite loop when size of downloadResults_ exceeds maxDownloadResult_
  82. * Support BitTorrent UDP tracker
  83. It shares UDP listening port with IPv4 DHT. At the moment, in order
  84. to enable UDP tracker support, enable IPv4 DHT.
  85. * Show correct end byte in error message when HTTP response range is not ok
  86. Previously, unless HTTP pipelining is enabled, end byte in that
  87. message is always 0. With this change, it shows correct end byte
  88. sent to the HTTP server.
  89. * Add Portuguese manual
  90. This translation is based on aria2 version 1.15.2 manual.
  91. Contributed by Gilberto dos Santos Alves
  92. * Fix bug that active downloads are not saved with --save-session-interval
  93. aria2 1.16.3
  94. ============
  95. Release Note
  96. ------------
  97. This release fixes the bug which causes random crash. It also fixes
  98. socket option setting failure on Windows platform.
  99. Changes
  100. -------
  101. * Fix failure to set TCP_NODELAY on Windows
  102. On Windows setting TCP_NODELAY after non-blocking connect fails at
  103. least on Windows 7.
  104. * Fix invalid iterator handling when deleting RequestGroup
  105. aria2 1.16.2
  106. ============
  107. Release Note
  108. ------------
  109. This release fixes the bug which causes long running BitTorrent
  110. download to stall. The several new options have been added.
  111. Changes
  112. -------
  113. * Check SSL_OP_NO_COMPRESSION is available before using it
  114. * Fix bug returnPeer is not called if sequence_ == INITIATOR_SEND_KEY
  115. In InitiatorMSEHandshakeCommand, when aborting connection, we must
  116. return peer to the PeerStorage. But it is not done if sequence_ is
  117. INITIATOR_SEND_KEY. This causes stale Peer objects whose usedBy()
  118. returns true eventually occupies peer list and aria2 cannot make any
  119. connections.
  120. * Accept k and m as well as K and M in util::getRealSize()
  121. * mingw32: Make NTFS sparse file on --file-allocation=trunc
  122. * Added --save-session-interval option
  123. --save-session-interval option saves error/unfinished downloads to a
  124. file specified by --save-session option every SEC seconds. If 0 is
  125. given, file will be saved only when aria2 exits.
  126. * Use request URI as referer if --referer="*" is given
  127. * Log warn if unknown option is found in config file or -i file
  128. * Added --console-log-level option
  129. --console-log-level option sets log level to output to console.
  130. aria2 1.16.1
  131. ============
  132. Release Note
  133. ------------
  134. This release adds the ability to persist GID across sessions. The GID
  135. will be saved with --save-session. There are several restrictions how
  136. GID is persisted. See the manual for details. For this change, now GID
  137. is 64 bits binary data and represented by 16 characters hex string in
  138. RPC query. The disk cache feature was added, which may reduce disk
  139. activity. The console readout was redesigned. The warning displayed
  140. when --file-allocation=falloc is used on MinGW32 build was removed as
  141. a bug.
  142. Changes
  143. -------
  144. * mingw32: Re-open files with read-only mode enabled on seeding
  145. On Mingw32 build, if aria2 opens file with GENERIC_WRITE access
  146. right, some programs cannot open the file aria2 is seeding. To avoid
  147. this situation, re-open files with read-only enabled when seeding is
  148. about to begin.
  149. * Save gid option with --save-session option
  150. * Added --gid option
  151. This option sets GID manually. aria2 identifies each download by the
  152. ID called GID. The GID must be hex string of 16 characters, thus
  153. [0-9a-zA-Z] are allowed and leading zeros must not be stripped. The
  154. GID all 0 is reserved and must not be used. The GID must be unique,
  155. otherwise error is reported and the download is not added. This
  156. option is useful when restoring the sessions saved using
  157. --save-session option. If this option is not used, new GID is
  158. generated by aria2.
  159. * Use 64 bits random bytes as GID
  160. This change replaces the current 64 bit sequential GID with 64 bits
  161. random bytes GID in an attempt to support persistent
  162. GID. Internally, the GID is stored as uint64_t. For human
  163. representation and RPC interface, GID is represented as 16 bytes hex
  164. string. For console readout, 16 bytes are too long, so it is
  165. abbreviated to first 6 bytes. When querying GID in RPC calls, user
  166. can speicfy the prefix of GID as long as the prefix is shared by
  167. more than 1 GID entries.
  168. * Fixed BitfieldMan::getOffsetCompletedLength overflow on 32-bit systems
  169. * mingw32: Use HANDLE only for MinGW32 build
  170. * Changed console readout, making it more compact
  171. "SIZE:" is removed because it is obvious. SEEDING, SEED, SPD and UP
  172. are now replaced with SEED, SD, DL and UL respectively.
  173. * Compact readout when more than 1 simultaneous downloads are going on
  174. If more than 1 simultaneous downloads are going on, use more compact
  175. format in readout. Currently, at most 5 download stats are
  176. displayed.
  177. util::abbrevSize() is rewritten to support "Gi" unit and provides
  178. more compact abbreviation.
  179. * Console color output
  180. Log level and download result string is now colored.
  181. * Logger: Simplified console output and change level format in log
  182. The date and time are now removed from console output. The log
  183. level is now formatted as "[LEVEL]".
  184. * Start to find faster host before the number of missing segments becomes 1
  185. The old implementation starts to find faster host when the number of
  186. missing segment becomes 1. Because of --min-split-size option,
  187. before the number of missing segment becomes 1, the number of
  188. connection becomes 1 and it can be slow. In this case, we have to
  189. wait until the last segment is reached. The new implementation
  190. starts to find faster host when the remaining length is less than
  191. --min-split-size * 2, to mitigate the problem stated above.
  192. * Removed warning when --file-allocation=falloc is used in MinGW32 build
  193. The warning was just a mistake. SetFilePointerEx + SetEndOfFile
  194. actually allocate disk space.
  195. * Write data in 4K aligned offset in write with disk cache enabled
  196. This greatly reduces disk activity especially on Win + NTFS. Not so
  197. much difference on Linux.
  198. * mingw32: Removed FSCTL_SET_SPARSE set
  199. * Added --disk-cache option
  200. This option enables disk cache. If SIZE is 0, the disk cache is
  201. disabled. This feature caches the downloaded data in memory, which
  202. grows to at most SIZE bytes. The cache storage is created for aria2
  203. instance and shared by all downloads. The one advantage of the disk
  204. cache is reduce the disk seek time because the data is written in
  205. larger unit and it is reordered by the offset of the file. If the
  206. underlying file is heavily fragmented it is not the case.
  207. aria2 1.16.0
  208. ============
  209. Release Note
  210. ------------
  211. This release adds SSL/TLS encryption support in RPC transport. The new
  212. RPC method aria2.appendUri is added, which is a wrapper to
  213. aria2.changeUri. The Content-Disposition parser is now RFC 6266
  214. conformant. The resource leak in XmlParser, JSON and Bencode parser
  215. was fixed. The uploaded data size calculation bug was fixed. For
  216. MinGW32 build, files are now opened with read/write shared mode.
  217. Changes
  218. -------
  219. * mingw32: Open file using _wsopen and added --enable-mmap support
  220. I tried CreateFile but the subsequent ReadFile fails with Access
  221. Denied if sparse file is read on NTFS. I mostly reverted previous
  222. changes and use _wsopen with read/write share enabled instead of
  223. CreateFile.
  224. This change also includes --enable-mmap support for MinGW32
  225. build. Memory mapped file may be useful for 64-bits OS and lots of
  226. RAM. Currently, FlushViewOfFile is not called during the download,
  227. so it is slightly vulnerable against sudden power loss. I found lots
  228. of read when resuming download due to page fault. So for now it is
  229. useful for the initial download. I recommend not to use
  230. --file-allocation=prealloc with --enable-mmap for MinGW32, because
  231. it triggers page faults even in the initial download. Anyway, the
  232. option is experimental.
  233. * Removed PO files and generated aria2.pot from repository
  234. Currently, message translation is done at launchpad. All PO files
  235. can be exported from there. The merge process from launchpad is done
  236. when new release. First download export file from launchpad And use
  237. import-po script to import PO files into po directory.
  238. * Set F_GLOBAL_NOCACHE for Mac OS X
  239. * Enabled TCP_NODELAY
  240. * Don't use AC_FUNC_MMAP
  241. Don't use AC_FUNC_MMAP becaue it fails on some platforms (e.g.,
  242. OpenWRT) which have mmap and it works in the way we use in aria2.
  243. Instead use mmap in AC_CHECK_FUNCS list.
  244. * Added --force-save option.
  245. --force-save option saves download with --save-session option even
  246. if the download is completed or removed. This may be useful to save
  247. BitTorrent seeding which is recognized as completed state. The
  248. default value is false.
  249. * Get the correct uploaded data size
  250. Subtract msgHdrLen_ from writtenLength to get the uploaded data
  251. size. Without this correction, the seeder assumes it has uploaded
  252. more data than it actually has.
  253. * Made --http-no-cache false by default
  254. * Fixed memory leak in AsyncNameResolver
  255. * Fixed resource leak in XmlParser and GenericParser
  256. * Reset iostream format state
  257. * gnutls: Added more status checking when verifying peer
  258. * Content-Disposition parser conforming to RFC 6266.
  259. RFC 2231 Continuation is not supported.
  260. * Reworked download/upload statistics calculation
  261. The old implementation calculates download/upload statistics for a
  262. RequestGroup by summing up all PeerStat objects. For global
  263. statistics, those are summed together. This clearly incurs runtime
  264. penalty and we introduced some kind of caching which updates
  265. statistics every 250ms but it did not work right.
  266. This change removes all these aggregation code, and instead makes
  267. RequestGroup and RequestGroupMan objects hold NetStat object and
  268. download/upload bytes are directly calculated by thier own NetStat.
  269. This is far more simplar than the old way and less runtime penalty
  270. and brings more accuracy.
  271. * Added --rpc-save-upload-metadata option
  272. If true is given, which is default, save the uploaded torrent or
  273. metalink metadata in the directory specified by --dir option. The
  274. filename consists of SHA1-hash hex string of metadata plus
  275. extension. For torrent, the extension is '.torrent'. For metalink,
  276. it is '.meta4'. If false is given to this option, the downloads
  277. added by aria2.addTorrent or aria2.addMetalink will not be saved by
  278. --save-session option.
  279. * Perform SSL/TLS handshake after checking whether connection is established
  280. * Fixed bug that --enable-mmap won't work if MultiDiskAdaptor is used
  281. * RPC over SSL/TLS transport
  282. To enable RPC over SSL/TLS, specify server certificate and private
  283. key using --rpc-certificate and --rpc-private-key options and enable
  284. --rpc-secure option. After the encryption is enabled, use https and
  285. wss scheme to access RPC server.
  286. * aria2rpc: Added appendUri command
  287. This command calls aria2.changeUri(GID, fileIndex, [], [URI,...])
  288. internally.
  289. * Don't send Proxy-Connection header field
  290. * Don't set SNI hostname if it does not include "." for GNUTLS
  291. * Disable SSL/TLS compression with OpenSSL
  292. * Pause download even if download is completed
  293. This allows to pause and unpause BitTorrent seed.
  294. * Use execlp() instead of execl()