Made files whose name ends with ".gz", ".tgz" not inflated by
Content
Encoding Decoder. Removed size threshold for turning off on the
fly
inflation because resulting file may or may not be inflated
depending
on the file size and I think it is not expected by users.
This change fixes segmentation fault when Metalink file contains
gzipped
file and its filesize is provided.
* src/HttpResponseCommand.cc
* src/HttpResponseCommand.h
Added CookieStorage class which is based on RFC2109 and manages
cookies
more strictly than CookieBox and CookieBoxFactory class.
* src/CookieStorage.cc
* src/CookieStorage.h
* src/Cookie.cc
* src/Cookie.h
* test/CookieStorageTest.cc
* test/CookieTest.cc
Bump up version number of dht.dat file to 3. In version 3
format, time
is stored in 64bit, network byte order.
New build can load old format(version 2) but it saves the file
in new
format. It means once you used new build, your dht.dat becomes
incompatible with older build.
* src/DHTRoutingTableDeserializer.cc
* src/DHTRoutingTableSerializer.cc
* test/DHTRoutingTableSerializerTest.cc
Bump up version number of .aria2 control file to 0001.
New aria2 can still load version 0000 file but it saves the file
in
version 0001 format. It means that new aria2 can resume download
started by old aria2 but the opposite is not true.
* src/DefaultBtProgressInfoFile.cc
* src/DefaultBtProgressInfoFile.h
* test/DefaultBtProgressInfoFileTest.cc
Fixed the bug that the number of connected peer is exceeding the
limit
(55 by default) in seeding mode.
Multiplied 0.8 to _maxUploadSpeedLimit.
* src/ActivePeerConnectionCommand.cc
If a cookie whose expire date is later than 2038-01-19 03:14:07
GMT is
sent from server, its expire date is assumed to 2038-01-19
03:14:07 GMT.
If Util::httpGMT is failed, then Cookie::onetime is set to true.
* src/Util.cc
* src/Util.h
* src/CookieParser.cc
* test/UtilTest.cc
* test/CookieParserTest.cc
Seprate the implementation to load old mozilla format of cookie
to
NsCookieParser class.
* src/CookieBoxFactory.cc
* src/CookieBoxFactory.h
* src/NsCookieParser.cc
* src/NsCookieParser.h
* test/NsCookieParserTest.cc
Fixed occasional assertion failure in PieceSegment.
Calling PieceStorage::getMissingPiece(size_t) was missing after
canceling segments in SegmentMan::getSegment(int32_t). This
resulted in
creation of duplicate segments and one of the segment was
finished then
assertion failure was caused.
* src/SegmentMan.cc
* test/SegmentManTest.cc
Added options to load/save the server's performance/status to a
file
and the timeout to drop their data.
--server-stat-of=FILE specifies the file to which performance
data
is saved.
--server-stat-if=FILE specifies the file to read previously
saved
by --server-stat-of option. Might be used with
--uri-selector=feedback.
--server-stat-timeout=TIMEOUT specifies timeout to invalidate
the data.
TIMEOUT is specified in seconds and the default value is
24hours.
* src/MultiUrlRequestInfo.cc
* src/OptionHandlerFactory.cc
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/ServerStatMan.cc
* src/ServerStatMan.h
* src/option_processing.cc
* src/prefs.cc
* src/prefs.h
* test/ServerStatManTest.cc
Implemented ServerStatMan::load(...) function and its test case.
* src/ServerStat.cc
* src/ServerStat.h
* src/ServerStatMan.cc
* test/ServerStatManTest.cc
* test/ServerStatTest.cc
Implemented ServerStatMan::save(...) function and its test case.
* src/ServerStat.cc
* src/ServerStat.h
* src/ServerStatMan.cc
* src/ServerStatMan.h
* test/ServerStatManTest.cc
Implemented download speed based URI selection algorithm.
Introduced new option --uri-selector.
If --uri-selector=feedback is given, aria2 uses download speed
observed
in the previous downloads and chooses fastest server in the URI
list.
Currently at most 10 URIs are considered to introduce
randomeness for
finding better servers. The speed is average download speed in
the
downloads.
On the other hand, if --uri-selector=inorder is given, which is
default,
URI is tried in order in URI list.
The usage text for the new option has not been written yet.
* src/AbstractCommand.cc
* src/DownloadCommand.cc
* src/DownloadEngine.cc
* src/DownloadEngineFactory.cc
* src/InOrderURISelector.cc
* src/InOrderURISelector.h
* src/OptionHandlerFactory.cc
* src/PeerStat.h
* src/RequestGroup.cc
* src/RequestGroup.h
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/SegmentMan.cc
* src/SegmentMan.h
* src/ServerStat.cc
* src/ServerStat.h
* src/ServerStatMan.cc
* src/ServerStatMan.h
* src/ServerStatURISelector.cc
* src/ServerStatURISelector.h
* src/URISelector.h
* src/option_processing.cc
* src/prefs.cc
* src/prefs.h
* test/InOrderURISelectorTest.cc
* test/RequestGroupManTest.cc
* test/ServerStatManTest.cc
* test/ServerStatURISelectorTest.cc
Fixed the bug that causes segmentaion fault when resuming
download
using metalink without size tag. Reproducible only using HTTP
URI.
* src/HttpResponseCommand.cc
* src/FtpNegotiationCommand.cc
Fixed broken gzip inflation.
Turn off segmented downloading if gzip content is smaller than
or equal
to 1MiB and inflate the data on the fly, because HTTP response
header
doesn't contain the length of inflated file we can't determin
where
the chunk of data should be written.
On the other hand, if gzip content is larger than 1MB, then turn
off
on the fly inflation, because some servers returns
"content-type: gzip"
for *.tgz, *.gz files.
* src/DownloadCommand.cc
* src/HttpResponseCommand.cc
* src/HttpResponseCommand.h
Added Bulgarian translation.
Updated Catalan, Spanish, French and Japanese translations.
Thanks to all translators.
* po/LINGUAS
* po/bg.po
* po/ca.po
* po/es.po
* po/fr.po
* po/ja.po
Now SegmentMan::findSlowerSegmentEntry() picks up the segment
for which
the transfer has not yet started.
Rewritten SegmentMan::registerPeerStat() and
SegmentMan::getPeerStat().
* src/SegmentMan.cc
* src/SegmentMan.h
* test/SegmentManTest.cc
Cache last calculated average download/upload speed.
PeerStat::getAvgDownloadSpeed(), PeerStat::getAvgUploadSpeed()
return
cached value.
Now SpeedCalc::changeSw() is called from
SpeedCalc::calculateSpeed()
* src/PeerStat.h
* src/SpeedCalc.cc
* src/SpeedCalc.h
Use File::exists() instead of File::isFile() to allow
non-regular file
such as block spacial device.
* src/AbstractDiskWriter.cc
* src/MultiDiskWriter.cc
Added the ability to save signature when download is completed
if
signature is available. The filename of signature file is the
path to
download file followed by ".sig". If it already exists, then
signature
will not be saved.
* src/RequestGroupMan.cc
* src/Signature.cc
* test/SignatureTest.cc
Renamed --bt-seed option as --bt-seed-unverified so that it
makes clear
that this is not going to verify files using piece hashes.
* src/HelpItemFactory.cc
* src/OptionHandlerFactory.cc
* src/RequestGroup.cc
* src/option_processing.cc
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
Moved the calls of std::ios::exceptions() inside of try-catch
block
because if an error occurred in constructor of std::fstream,
then
exception is thrown immediately when std::ios::exceptions() is
called
which results unhandled exception and aria2c aborts.
* src/DefaultBtProgressInfoFile.cc
Fixed the bug that causes infinite loop when the number of
pieces are
fewer than allowed fast set size which is 10 by default.
* src/DefaultBtContext.cc
Introduced a2_struct_stat. It is defined as `struct _stati64' if
__MINGW32__ is defined, because under MinGW32, _stati64 is used
and its
second argument is of type `struct _stati64'. Otherwise it is
defined as
`struct stat'.
* src/AbstractDiskWriter.cc
* src/File.cc
* src/File.h
* src/a2io.h
Added gzip, deflate decoding support in HTTP using libz. If
compiled
with this feature, aria2 sends "Accept-Encoding: deflate, gzip"
header
to a HTTP server. If a server returns "Content-Encoding: gzip"
or
"Content-Encoding: deflate" then, aria2 decodes the response
body on the
fly and writes decoded data to a local disk.
* README
* README.html
* configure.ac
* m4/aria2_arg.m4: Added ARIA2_ARG_WITH and ARIA2_ARG_ENABLE,
they are
wrapper function for AC_ARG_WITH and AC_ARG_ENABLE respectively.
* m4/libz.m4
* src/Decoder.h
* src/DownloadCommand.cc
* src/DownloadCommand.h
* src/Exception.h
* src/GZipDecoder.cc
* src/GZipDecoder.h
* src/HttpHeader.cc
* src/HttpHeader.h
* src/HttpRequest.cc
* src/HttpRequest.h
* src/HttpResponse.cc
* src/HttpResponse.h
* src/HttpResponseCommand.cc
* src/Makefile.am
* test/GZipDecoderTest.cc
* test/HttpRequestTest.cc
* test/HttpResponseTest.cc
* test/Makefile.am
* test/Makefile.in
* test/gzip_decode_test.gz
Disabled getting size from the response of RETR.
If SIZE command failed, then disable resuming and segmented
downloading.
* src/FtpConnection.cc
* src/FtpConnection.h
* src/FtpNegotiationCommand.cc
* src/FtpNegotiationCommand.h
Use digits to find first byte of file size, which makes the
intention
of the code clearer.
* src/FtpConnection.cc
Don't call validateTotalLength() when size is 0.
* src/FtpNegotiationCommand.cc
If FTP server returns negative response with REST raw command
and
requested range is not 0, throw exception. If requested range is
0,
continue download a file from 0 byte.
* src/FtpNegotiationCommand.cc
* src/FtpNegotiationCommand.h
Supported FTP server which don't recognize SIZE raw command.
If SIZE raw command is failed, aria2 will try to get file size
from the response of RETR raw command. If both attempts are
failed,
then resuming and segmented downloading are disabled.
* src/FtpConnection.cc
* src/FtpConnection.h
* src/FtpNegotiationCommand.cc
* src/FtpNegotiationCommand.h
Filled up pieces based on the number of missing blocks, rather
than
simplay the number of piece * block length.
* src/BtRequestFactory.h
* src/DefaultBtInteractive.cc
* src/DefaultBtInteractive.h
* src/DefaultBtRequestFactory.cc
* src/DefaultBtRequestFactory.h
* src/Piece.cc
* src/Piece.h
* test/BitfieldManTest.cc
* test/DefaultBtRequestFactoryTest.cc
* test/MockBtRequestFactory.h
When there is not enough space in disk when writing a chunk of
data,
aria2 now prints the message to the console to warn user and
aborts
its download. Not all downloads are canceled because some
downloads
may use another disk or partition. BUG#1640332
* src/AbstractDiskWriter.cc
* src/PeerAbstractCommand.cc
* src/PeerAbstractCommand.h: Added onFailure() function for
override.
* src/PeerInteractionCommand.cc: In onFailure(), call
RequestGroup::
setHaltRequested(true) to cancel download.
* src/PeerInteractionCommand.h
Applied Ross's aria2-0.13.2+1-mingw-5.patch, which changes the
type of
socket from int to sock_t as sockets are unsigned in Windows.
For AsyncNameResolver, DownloadEngine, I did additional
modification
for the portion of the code changed according to epoll support.
I defined sock_t in a2netcompat.h to use sock_t without
including
SocketCore.h.
* src/AsyncNameResolver.cc
* src/AsyncNameResolver.h
* src/DownloadEngine.cc
* src/DownloadEngine.h
* src/SocketCore.cc
* src/SocketCore.h
* src/a2netcompat.h
Applied Ross's aria2-0.13.2+1-mingw-4.patch. With this change,
all
changes in the patch were applied.
* test/DHTConnectionImplTest.cc: Fixed unit test error in MinGW.
* test/DefaultPieceStorageTest.cc: Fixed unit test error in
MinGW.
* test/PeerMessageUtilTest.cc: Fixed unit test error in MinGW.
Applied Ross's aria2-0.13.2+1-mingw-4.patch. In this change,
a2io.h and common.h were modified.
* src/a2io.h: Changed seek/stat/tell calls to use 64 bit
versions in
MinGW.
* src/common.h: Changed off_t to 64 bit in MinGW.
Applied Ross's aria2-0.13.2+1-mingw-4.patch. In this commit,
only a2netcompat.h is modified.
* src/a2netcompat.h: Removed unused getaddrinfo related #define
directives.
Applied Ross's aria2-0.13.2+1-mingw-4.patch. In this commit,
only gai_strerror.h is modified.
* src/gai_strerror.h: Fixed gai_strerror() function to report
all
winsock errors in MinGW.
Applied Ross's aria2-0.13.2+1-mingw-4.patch. In this commit,
only the
follow sources are applied.
* src/Platform.h: I removed HAVE_WINSOCK2_H directive from
Platform.h.
* src/Platform.cc: Moved common setup/teardown code to Platform
class.
I moved #endif // HAVE_WINSOCK2_H to the front of #include
"DlAbortEx.h"
I included locale.h from Platform.cc.
* src/main.cc: Moved common setup/teardown code to Platform
class.
* test/AllTest.cc: Use Platform class.
Set locale to C in AllTest.cc to prevent the messages to be
localized.
Applied Ross's aria2-0.13.2+1-mingw-3.patch.
* test/HttpHeaderTest.cc: Casted to off_t where it should.
* test/HttpRequestTest.cc: Casted to off_t where it should.
Applied Ross's aria2-0.13.2+1-mingw.patch and
aria2-0.13.2+1-mingw-2.patch.
* src/ConsoleStatCalc.cc: Added HAVE_TERMIOUS_H directive for
the
systems which don't have termious.h. I moved the directive
inside of
if(isTTY) { ... clause so that line is wiped out without
termious.h.
I also removed HAVE_ASCTIME_R clause because asctime_r is
provided
anyway.
* src/asctime_r.h
* src/asctime_r.c: Added for the systems don't have asctime_r
function.
I added 2nd argument to the prototype declaration.
* src/StringFormat.cc: Get rid of vasprintf.
* src/getaddrinfo.h: Fixed constants.
* configure.ac: Added the check for asctime_r function.
* src/Makefile.am: Added conditional based on HAVE_ASCTIME_R
Added writable test for Socket when the sending message is in
progress.
Usually the sending message is piece message. Without wriable
check,
upload latency is dropped to more than 1sec.
* src/PeerInteractionCommand.cc