From 031ff9ae6270a2346d644af84b71132833391991 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sat, 1 Dec 2012 21:32:33 +0900 Subject: [PATCH] Updated NEWS for 1.16.0 release --- NEWS | 240 +++++++++++++++++++++-------------------------------------- 1 file changed, 83 insertions(+), 157 deletions(-) diff --git a/NEWS b/NEWS index 6972b6db..bee0dd1f 100644 --- a/NEWS +++ b/NEWS @@ -1,202 +1,128 @@ -aria2 1.15.2 +aria2 1.16.0 ============ Release Note ------------ -This release fixes several critical bugs. It also adds new features -such as TLS SNI and CORS support. The --file--allocation option now -take another value trunc. The new option --enalbe-mmap was added. -aria2 now uses system-wide SSL/TLS certificates by default, which -eliminates the requirement to specify --ca-certificate option. +This release adds SSL/TLS encryption support in RPC transport. The new +RPC method aria2.appendUri is added, which is a wrapper to +aria2.changeUri. The Content-Disposition parser is now RFC 6266 +conformant. The resource leak in XmlParser, JSON and Bencode parser +was fixed. The uploaded data size calculation bug was fixed. For +MinGW32 build, files are now opened with read/write shared mode. Changes ------- -* Catch exception from Socket::getPeerInfo() when pooling connection. - Socket::getPeerInfo() may fail if its TCP connection has already - disconnected. In this case, we log this error. The success or - failure of pooling connection should not affect the later execution - of the program. This bug may cause segmentation fault if - Socket::getPeerInfo() throws exception during pooling connection - after successful tracker request. +* mingw32: Open file using _wsopen and added --enable-mmap support -* Fixed assertion error if --retry-wait is used. In - CreateRequestCommand, if Request object returned from getRequest() - is still sleeping, CreateRequestCommand pools it back but still - holds its reference. This makes assertion error in - UnknownLengthPieceStroage::hasMissingUnusedPiece() from - AbstractCommand::execute(). + I tried CreateFile but the subsequent ReadFile fails with Access + Denied if sparse file is read on NTFS. I mostly reverted previous + changes and use _wsopen with read/write share enabled instead of + CreateFile. -* Added new file allocation method called 'trunc'. --file-allocation - option can now take new value 'trunc'. 'trunc' uses ftruncate() - system call or platform-specific counterpart to truncate a file to a - specified length. + This change also includes --enable-mmap support for MinGW32 + build. Memory mapped file may be useful for 64-bits OS and lots of + RAM. Currently, FlushViewOfFile is not called during the download, + so it is slightly vulnerable against sudden power loss. I found lots + of read when resuming download due to page fault. So for now it is + useful for the initial download. I recommend not to use + --file-allocation=prealloc with --enable-mmap for MinGW32, because + it triggers page faults even in the initial download. Anyway, the + option is experimental. -* Use int64_t instead of off_t. Using off_t, at least, in DiskAdaptor - layer is problematic because torrent can contain under 2GiB files - but total sum of those files may exceed 2GiB limit, which makes - off_t overflow in 32 bit system without large file support. So we - use int64_t in API. We'll check the file length before download so - that it does not exceed max off_t. +* Removed PO files and generated aria2.pot from repository -* Added TLS SNI support. + Currently, message translation is done at launchpad. All PO files + can be exported from there. The merge process from launchpad is done + when new release. First download export file from launchpad And use + import-po script to import PO files into po directory. -* Rewritten timegm replacement function. The algorithm is based on - Python 2.7 calendar.timegm. +* Set F_GLOBAL_NOCACHE for Mac OS X -* Use system-wide certificates for SSL. Use system-wide certificates - for SSL. For GnuTLS it requires the latest version, 3.0.20. OpenSSL - had it for longer. This means that if SSL library is properly - configured to locate system-wide certificates store, the user don't - have to use --ca-certificate option. Also packagers don't have to - use --with-ca-bundle configure option. Patch from Cristian Morales - Vega +* Enabled TCP_NODELAY -* Fixed base64::decode() return "" if input ends with garbage and no - padding. +* Don't use AC_FUNC_MMAP -* Changed default Peer ID prefix. The new Peer ID prefix is - "A2-$MAJOR-$MINOR-$MICRO-", where $MAJOR, $MINOR and $MICRO are the - major version, the minor version and the micro version - respectively. For instance, 1.15.2 release of aria2 will use - "A2-1-15-2-". + Don't use AC_FUNC_MMAP becaue it fails on some platforms (e.g., + OpenWRT) which have mmap and it works in the way we use in aria2. + Instead use mmap in AC_CHECK_FUNCS list. -* Don't percent-decode filename value in Content-Disposition. We only - percent-decode filename* value in Content-Disposition because the - encoding is fully specified. But since filename value is not, so we - just accept it as is. +* Added --force-save option. -* Don't sum in-flight piece which does not intersect filtered ranges. - When calculating completed length, don't sum the completed length of - piece which does not intersect filtered ranges. + --force-save option saves download with --save-session option even + if the download is completed or removed. This may be useful to save + BitTorrent seeding which is recognized as completed state. The + default value is false. -* Fixed segmentation fault when logger failed to open log file. +* Get the correct uploaded data size -* Added ARIA2_STATIC precious variable to configure option. To build - statically linked aria2 binary, give ARIA2_STATIC=yes to configure, - like this: - $ ./configure ARIA2_STATIC=yes + Subtract msgHdrLen_ from writtenLength to get the uploaded data + size. Without this correction, the seeder assumes it has uploaded + more data than it actually has. -* Use PRId64 for int64_t format specifier +* Made --http-no-cache false by default -* Handle the case when MINGW32 vsnprintf returns -1. MINGW32 vsnprintf - returns -1 if output is truncated. Increased buffer for vsnprintf - in WinConsoleFile and fmt. +* Fixed memory leak in AsyncNameResolver -* Added --enable-mmap option. If this option is used, map files into - memory using mmap(2). This option is experimental. +* Fixed resource leak in XmlParser and GenericParser -* Added CORS preflight request support in RPC interface. This change - is based on the patch from binux. +* Reset iostream format state - +* gnutls: Added more status checking when verifying peer -aria2 1.15.1 -============ +* Content-Disposition parser conforming to RFC 6266. -Release Note ------------- + RFC 2231 Continuation is not supported. -This release fixes the bug that prevents --bt-lpd-interface from -working. If some options sent by RPC request are not acceptable for -the download type, they are now simply ignored instead of rejecting -RPC request entirely. The aria2 RPC server now returns 4XX error code -if the request is not valid in the HTTP level. To improve packaging, ---with-bashcompletiondir configure option was added. This option -overrides where the aria2c bash_completion file is going to be -installed. All manual pages are now generated by Sphinx. +* Reworked download/upload statistics calculation -Changes -------- + The old implementation calculates download/upload statistics for a + RequestGroup by summing up all PeerStat objects. For global + statistics, those are summed together. This clearly incurs runtime + penalty and we introduced some kind of caching which updates + statistics every 250ms but it did not work right. -* Return appropriate HTTP status code on RPC failure. In this change, - we return 404 if the request path is neither /json-rpc nor /rpc. If - XML feature is not enabled and /rpc is requested, return 404. If - XML parser failed, return 400. JSON parser failure has been handled - well in the existing code. + This change removes all these aggregation code, and instead makes + RequestGroup and RequestGroupMan objects hold NetStat object and + download/upload bytes are directly calculated by thier own NetStat. + This is far more simplar than the old way and less runtime penalty + and brings more accuracy. -* Ignore unacceptable options in RPC request instead of throwing - error. This change allows RPC client to send same options for the - different type of downloads. +* Added --rpc-save-upload-metadata option -* Handle sockaddr_in.sin_len and sockaddr_in6.sin6_len. Check - sockaddr_in.sin_len and sockaddr_in6.sin6_len are available and - assign values to them properly. This change fixes unit test error - and most error related to getnameinfo() on netbsd. + If true is given, which is default, save the uploaded torrent or + metalink metadata in the directory specified by --dir option. The + filename consists of SHA1-hash hex string of metadata plus + extension. For torrent, the extension is '.torrent'. For metalink, + it is '.meta4'. If false is given to this option, the downloads + added by aria2.addTorrent or aria2.addMetalink will not be saved by + --save-session option. -* Removed dependency on inet_aton. Implemented inetPton as a - replacement of inet_aton. inetPton is implemented using - net::getBinAddr. This change fixes bug#3525424. +* Perform SSL/TLS handshake after checking whether connection is established -* Added --with-bashcompletiondir configure option. By default, - bash_completion file named aria2c is installed to the directory - $prefix/share/doc/aria2/bash_completion. To change the install - directory of the file, use --with-bashcompletiondir option. +* Fixed bug that --enable-mmap won't work if MultiDiskAdaptor is used -* Converted README.asciidoc into README.rst +* RPC over SSL/TLS transport -* Use Sphinx for aria2 manual page documentation. The source files - for manual pages are placed under doc/manual-src. The manual pages - are generated under doc/manual-src/$LANG/_build. The HTML version - manual page was dropped from the distribution archive. + To enable RPC over SSL/TLS, specify server certificate and private + key using --rpc-certificate and --rpc-private-key options and enable + --rpc-secure option. After the encryption is enabled, use https and + wss scheme to access RPC server. -* Fixed the bug which prevents --bt-lpd-interface from working. - Fixes bug#3520125 +* aria2rpc: Added appendUri command - + This command calls aria2.changeUri(GID, fileIndex, [], [URI,...]) + internally. -aria2 1.15.0 -============ +* Don't send Proxy-Connection header field -Release Note ------------- +* Don't set SNI hostname if it does not include "." for GNUTLS -This release adds JSON-RPC over WebSocket. It uses the same -request/response JSON objects with existing JSON-RPC over HTTP and -adds event notifications from server to client. See manpage for -details. TLS hostname check is rewritten based on RFC 6125 and it is -used for both GNUTLS and OpenSSL builds. The ---bt-remove-unselected-file option was added. This option removes the -unselected files when BitTorrent download is completed. +* Disable SSL/TLS compression with OpenSSL -Changes -------- +* Pause download even if download is completed -* Use CreateProcessW instead of CreateProcessA in MinGW build. This - means filename is now passed as wchar string, not UTF-8 encoded char - string. + This allows to pause and unpause BitTorrent seed. -* Check with pkg-config only: c-ares, openssl, sqlite3 and zlib. - Removed --with-*-prefix configure option for c-ares, openssl, - sqlite3, zlib and expat. Use CPPFLAGS and/or PKG_CONFIG_PATH - instead. - -* Fixed compile error with i686-w64-mingw32 and x86_64-w64-mingw32 - cross compilers. - -* Get the home directory of the effective user ID using getpwuid() if - $HOME is not defined. - -* Don't use locale dependent toupper and tolower. - -* Rewritten TLS hostname check based on RFC 6125 for both GNUTLS and - OpenSSL builds. - -* Added --bt-remove-unselected-file option. Removes the unselected - files when download is completed in BitTorrent. To select files, use - --select-file option. If it is not used, all files are assumed to be - selected. Please use this option with care because it will actually - remove files from your disk. This option is default to false. - -* Fixed compile error on Open Solaris. Fixes bug#3497518 - -* Added JSON-RPC over WebSocket. - -* Fixed assertion failure if Chunked encoding along with - Content-Length is used. - -* Fixed clang and gcc-4.7 warning and errors. - -* Fixed the bug that aria2 cannot read line longer than 4096 bytes - from the file specified by --input-file option. Fixes bug#3495336 +* Use execlp() instead of execl()