Closed files after the test cases in MultiDiskWriterTest::
testResetDiskWriterEntries(). This will fix the unit test error
in mingw32 build.
* test/MultiDiskWriterTest.cc
Use HEAD method to get file size from HTTP server for segmented
downloading.
The request to the BitTorrent Tracker always uses GET method
because the response of the tracker is small and it doesn't need
segmented download.
* src/FtpNegotiationCommand.cc
* src/HttpRequest.cc
* src/HttpResponseCommand.cc
* src/HttpSkipResponseCommand.cc
* src/RequestGroup.cc
* src/RequestGroup.h
* src/TrackerWatcherCommand.cc
* test/HttpRequestTest.cc
Do not urlencode Request::url in setUrl() because we want
unmodified URL using Request::getUrl()
* src/Request.cc
* src/Request.h
* test/RequestTest.cc
Excluded testLoad_compat() and testLoad_nonBt_compat() when
compiled on big endian systems because test .aria2 files are
made for little endian systems.
* test/DefaultBtProgressInfoFileTest.cc
Fixed the bug that causes segmentation fault/bus error during
executing choking algorithm while seeding. This is caused by
improper implementation of compare function which returns
inconsistent results depending on the timing of last unchoke.
* src/BtSeederStateChoke.cc
* src/BtSeederStateChoke.h
* src/DefaultPeerStorage.cc
Added -V for the short form of --check-integrity option.
Now the argument of --check-integrity option is optional:
if it is omitted, it is evaluated as true.
* doc/aria2c.1.txt
* src/option_processing.cc
* src/usage_text.h
Made the default value of --ftp-pasv option set to true and it
can take true/false values.
* src/OptionHandlerFactory.cc
* src/option_processing.cc
* src/usage_text.h
* doc/aria2c.1.txt
Erase peer before executing onReturningPeer and onErasingPeer
because choking algorithm called from onReturningPeer doesn't
like erasing peer in the active peer list.
* src/DefaultPeerStorage.cc
Instead of creating special filename in createDownloadResult()
if inMemoryDownload() is true, now it is done in getFilePath().
* src/RequestGroup.cc
* test/RequestGroupTest.cc
Print "[MEMORY]" and filename if a file is not saved in disk and
just processed in memory. This is the fix for previous comment
out.
* src/MemoryBufferPreDownloadHandler.cc
* src/RequestGroup.cc
* src/RequestGroup.h
Commented out the code which sets virtual directory path
"[MEMORY]" propagate directory to store to following
RequestGroup.
* src/MemoryBufferPreDownloadHandler.cc
Rewritten URI handling functions. They are now provided as a
testable functions.
* src/Makefile.am
* src/RequestGroup.cc
* src/RequestGroup.h
* src/download_helper.cc
* src/download_helper.h
* src/main.cc
* test/DownloadHelperTest.cc
* test/Makefile.am
* test/input_uris.txt
Added the ability to specify output filename and directory in
input file.
Additional parameters are added in the following line of URIs
with proceeding white space(s), 1 parameter in 1 line.
The parameter names are the same with the command-line option
name without proceeding "--". Not all the options are available
here: at the moment, 'dir' and 'out' options are avialable.
Please note that out option has no effect against Metalink or
BitTorrentdownloads.
Example input file:
http://host/foo-1.1.tar.bz2
out=foo.tar.bz2
dir=/tmp/downloads
http://host/thundermonkey-2.0.tar.bz2
And then invoke 'aria2c -i url.txt --dir ~/mydownloads'.
foo-1.1.tar.bz2 is saved as /tmp/downloads/foo.tar.bz2, whereas
thundermonkey-2.0.tar.bz2 is saved as
~/mydownloads/thundermonkey-2.0.tar.bz2.
* src/BtPostDownloadHandler.cc
* src/Metalink2RequestGroup.cc
* src/Metalink2RequestGroup.h
* src/MetalinkPostDownloadHandler.cc
* src/UriListParser.cc
* src/UriListParser.h
* src/main.cc
* test/Metalink2RequestGroupTest.cc
* test/UriListParserTest.cc
* test/filelist1.txt
Fixed the bug that metalink file is not processed if
Content-Type field has a paramter.
* src/HttpResponse.cc
* src/HttpResponse.h
* test/HttpResponseTest.cc
Fixed the bug that DefaultPieceStorage::getCompletedLength()
returns the value larger than DefaultPieceStorage::getTotalLength()
when in flight pieces are involved.
* src/DefaultPieceStorage.cc
* test/DefaultPieceStorageTest.cc
Added --no-proxy option. It receives comman separated hostname
or domains to which proxy should not be used.
aria2 honors the environment variable no_proxy to override
no-proxy value in configuration file. The user can override the
environment variable no_proxy with --no-proxy command-line
option.
* src/AbstractCommand.cc
* src/OptionHandlerFactory.cc
* src/option_processing.cc
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
Added the ability to verify peer in SSL/TLS using given CA
certificates.
The CA certificates are specified in --ca-certificate option.
By default, the verification is disabled. Use --check-certificate
option to enable it.
* src/HttpRequestCommand.cc
* src/LibgnutlsTLSContext.cc
* src/LibgnutlsTLSContext.h
* src/LibsslTLSContext.cc
* src/LibsslTLSContext.h
* src/MultiUrlRequestInfo.cc
* src/OptionHandlerFactory.cc
* src/SocketCore.cc
* src/SocketCore.h
* src/a2functional.h
* src/message.h
* src/option_processing.cc
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
Added client certificate authentication for SSL/TLS.
Currently a private key must be decrypted for use with aria2.
If a user accidentally gives encrypted file to aria2 then
following thing happens:
If encrypted private key is given to aria2, it behaves
differently depending on the ssl library it uses. If aria2 built
with openssl then openssl prompts the user for password.
If aria2 build with gnutls then aria2 exists with error at start up.
* src/DownloadEngineFactory.cc
* src/MultiUrlRequestInfo.cc
* src/OptionHandlerFactory.cc
* src/option_processing.cc
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
Introduced TLSContext that holds TLS related data that can be
shared with multiple SSL connections.
* src/DownloadEngineFactory.cc
* src/LibgnutlsTLSContext.cc
* src/LibgnutlsTLSContext.h
* src/LibsslTLSContext.cc
* src/LibsslTLSContext.h
* src/Makefile.am
* src/SocketCore.cc
* src/SocketCore.h
* src/TLSContext.h
* src/message.h
Fixed the bug that the DiskWriter of the first FileEntry whose
`needsFileAllocation' property is false is not created
even if it shares a piece with next FileEntry which `requested'
property is true.
Fixed the bug that zero-length file is not created if pre file
allocation is not done.
* src/MultiDiskAdaptor.cc
* src/MultiDiskAdaptor.h
* test/MultiDiskAdaptorTest.cc
Added the ability to pool proxy connection.
The conneciton in FTP with proxy-method=GET is not pooled.
Proxy-Connection header will not be sent when sending CONNECT
method.
* src/DownloadEngine.cc
* src/DownloadEngine.h
* src/FtpFinishDownloadCommand.cc
* src/FtpInitiateConnectionCommand.cc
* src/FtpNegotiationCommand.cc
* src/HttpDownloadCommand.cc
* src/HttpInitiateConnectionCommand.cc
* src/HttpRequest.cc
* src/HttpRequest.h
* src/HttpResponse.cc
* src/HttpSkipResponseCommand.cc
* test/HttpRequestTest.cc
* test/HttpResponseTest.cc
Added support for following envrionment variables: http_proxy,
https_proxy, ftp_proxy and all_proxy.
Each variable is equivalent to the aria2 option whose name is
the variable name with '_' replaced with '-'.
They overrides options specified in aria2.conf file.
The envrionment variables can be overrode using command-line
option.
* src/option_processing.cc
Treat Cookie object as session cookie if expiry = 0 is given.
With this change, you can specify session scoped cookies in an
external file setting expiry value to 0.
* src/Cookie.cc
* src/Cookie.h
* test/CookieParserTest.cc
* test/CookieStorageTest.cc
* test/CookieTest.cc
Changed signature of DHTMessageFactory::createResponseMessage().
Removed unused validateIDMatch.
* src/DHTMessageFactory.h
* src/DHTMessageFactoryImpl.cc
* src/DHTMessageFactoryImpl.h
* src/DHTMessageTracker.cc
* test/DHTMessageFactoryImplTest.cc
* test/MockDHTMessageFactory.h
Dropped DHT message coming from same ID of localhost.
* src/DHTMessageReceiver.cc
Rejected adding node whose ID is the same as localhost's.
* src/DHTRoutingTable.cc
* test/BtPortMessageTest.cc
* test/DHTRoutingTableTest.cc
Fixed the bug that causes time out when redirection occurs with
content-length 0.
* src/HttpResponseCommand.cc
* src/HttpSkipResponseCommand.cc
* src/HttpSkipResponseCommand.h
Now each status legends is shown only when it appears in Download
Result. If Download Result has no item, then status legend will not
be printed.
* src/RequestGroupMan.cc
Fixed the bug that causes segmentation fault when accessing files which
don't exist or are not included in --select-file option while
validating chunk checksum.
* src/MultiDiskAdaptor.cc
Added length equality test to operator== to drop a piece message
whose length does not match to the requested one.
* src/RequestSlot.cc
* test/DefaultBtMessageDispatcherTest.cc
Fixed the bug that aria2 aborts when a request larger than 16KiB
is
recieved.
In this fix, if a request larger than 16KiB length is received,
aria2
disconnects the peer.
* src/BtConstants.h
* src/PeerMessageUtil.cc
* src/PeerMessageUtil.h
* test/BtRequestMessageTest.cc
Added Ukrainian, Vietnamese, Traditional Chinese translations.
Updated French, Simplified Chinese and Japanese translations.
Thanks to all translators.
en@quot and en@boldquot are also added.
* po/LINGUAS
* po/fr.po
* po/ja.po
* po/uk.po
* po/vi.po
* po/zh_CN.po
* po/zh_TW.po
Added --auto-save-interval=SEC option. A control file(*.aria2)
is saved
every SEC seconds.
* src/DownloadEngineFactory.cc
* src/OptionHandlerFactory.cc
* src/option_processing.cc
* src/usage_text.h
Fixed compile warning on linux-amd64
* src/FtpConnection.cc
* src/IteratableChunkChecksumValidator.cc
* src/MultiDiskAdaptor.cc
Fixed the bug that unit test fails on linux-amd64
* test/UtilTest.cc
Added --dht-file-path option to change the path to dht.dat,
which is a
serialized DHT routing table.
* src/OptionHandlerFactory.cc
* src/option_processing.cc
* src/usage_text.h
Fixed the bug that referer header field contains fragment.
Now Request class removes fragment part of URI and encodes it
in Request::setUri() and setReferer().
* src/Request.h
* src/Request.cc
* test/RequestTest.cc
Updated French, Simplified Chinese, German, Bulgarian and
Japanese
translations. Thanks to all translators.
* po/bg.po
* po/de.po
* po/fr.po
* po/ja.po
* po/zh_CN.po
Use sqlite3_open if sqlite3_open_v2 is not available.
* src/Sqlite3MozCookieParser.cc
* src/Sqlite3MozCookieParser.h
* m4/sqlite3.m4
* test/Sqlite3MozCookieParserTest.cc
Use seek() and SetEndOfFile() for mingw32 build instead of
ftruncate(),
because mingw32's ftruncate() cannot handle more than 2GB-size
file.
* src/AbstractDiskWriter.cc
Don't set Request::supportsPersistentConnection() in
HttpConnection
since this code is also used in AbstractProxyResponseCommand.
Moved those code to HttpResponse.
* src/HttpResponse.cc
* src/HttpResponse.h
* src/HttpConnection.cc
* src/HttpConnection.h
* src/HttpResponseCommand.cc
* test/HttpResponseTest.cc
Fixed compile error with debian mingw32 cross compiler(4.2.1).
The configuration is minimum: no torrent, no metalink, so there
may be
other compile error on their code.
* src/a2netcompat.h
* src/File.cc
* src/File.h
* src/SocketCore.cc
* src/SocketCore.h
Fixed the bug that aria2 may send duplicate data to BitTorrent
peer if
whole message data is not sent in one send() call.
* src/BtPieceMessage.cc
* src/BtPieceMessage.h
* src/PeerConnection.cc
* src/PeerConnection.h
* src/SimpleBtMessage.cc
* src/SimpleBtMessage.h
Fixed the bug that aria2 downloads faster than
max-download-limit when
downloading file using both HTTP(or FTP) and BitTorrent, because
aria2
evaluates speed separatly(HTTP and BiTorrent) against
max-download-limit
, instead of sum of them.
* src/ActivePeerConnectionCommand.cc
* src/DefaultBtInteractive.cc
* src/DownloadCommand.cc
* src/PeerInteractionCommand.cc
* src/PeerReceiveHandshakeCommand.cc
When error occurs while aria2 is parsing an command-line option,
print
the usage of the option.
* src/Makefile.am
* src/NameMatchOptionHandler.h
* src/OptionHandlerException.h
* src/option_processing.cc
Reverted previous change.
Insert username+'@' to URI(after ftp://) when URI is FTP scheme
and
username is not in URI.
* src/HttpRequest.cc
* src/Request.cc
* test/HttpRequestTest.cc
* test/RequestTest.cc
Now colon is required for username and password in FTP URL,
like:
ftp://username:password@host.
If colon is not there, aria2 don't parse it as a username. For
example,
aria2 don't retrieve username from ftp://username@host.
This fix was made in order to login FTP server via
non-transparent ftp
proxy.
* src/Request.cc
* test/RequestTest.cc
Use netrc for HTTP.
Now FTP user/password is sent in Authorization header when
--ftp-via-http-proxy=get is given.
* src/AuthConfigFactory.cc
* src/HttpRequest.cc
* src/HttpRequest.h
* src/NetrcAuthResolver.cc
* src/NetrcAuthResolver.h
* src/OptionHandlerFactory.cc
* src/option_processing.cc
* src/prefs.cc
* src/prefs.h
* test/AuthConfigFactoryTest.cc
* test/HttpRequestTest.cc
* test/NetrcAuthResolverTest.cc
Issue PWD command first and get working directory and use it as
a prefix
for CWD command.
* src/DownloadEngine.cc
* src/DownloadEngine.h
* src/FtpConnection.cc
* src/FtpConnection.h
* src/FtpFinishDownloadCommand.cc
* src/FtpInitiateConnectionCommand.cc
* src/FtpNegotiationCommand.cc
* src/FtpNegotiationCommand.h
* test/FtpConnectionTest.cc
Fixed the bug that a block in a piece is requested when same
block is
already requested to the same peer in end game mode.
* src/BtRequestFactory.h
* src/DefaultBtInteractive.cc
* src/DefaultBtRequestFactory.cc
* src/DefaultBtRequestFactory.h
* src/DefaultPieceStorage.cc
* src/DefaultPieceStorage.h
* src/PieceStorage.h
* src/UnknownLengthPieceStorage.cc
* src/UnknownLengthPieceStorage.h
* test/DefaultBtRequestFactoryTest.cc
* test/DefaultPieceStorageTest.cc
* test/MockBtRequestFactory.h
* test/MockPieceStorage.h
Removed _uploadLength and _downloadLength from
PeerSessionResource
and use PeerStat::_sessionUploadLength and
PeerStat::_sessionDownloadLength.
* src/PeerSessionResource.cc
* src/PeerSessionResource.h
Fixed the bug that prefixLength of split bucket which doesn't
include
local node ID is incremented.
* src/DHTBucket.cc
* src/DHTBucket.h
* test/DHTBucketTest.cc
Moved isProxyGETRequest function outside #ifdef ENABLE_ASYNC_DNS
clause
to fix compile error when async DNS is not enabled by
configuration.
* src/AbstractCommand.cc
If establishing conneciton to a server is failed, then mark
error on
its ServerStat.
Added the cause of error to log when error event occurred.
Moved message string to message.h for translation.
* src/AbstractCommand.cc
* src/AbstractCommand.h
* src/FtpNegotiationCommand.cc
* src/HttpRequestCommand.cc
* src/PeerAbstractCommand.cc
* src/message.h