Revert the default value of --max-concurrent-downloads to 5.
Revert the default value of --metalink-servers to 5.
Man pages was also updated.
* src/option_processing.cc
* doc/aria2c.1.txt
* doc/aria2c.1.html
* doc/aria2c.1
Defined option name and possible values as std::string to reduce
temporary string object creation in runtime.
* src/HelpItemFactory.cc
* src/LogFactory.cc
* src/Option.cc
* src/OptionHandlerFactory.cc
* src/option_processing.cc
* src/prefs.cc
* src/prefs.h
Print download progress summary of all parallel downloads in specified
interval, default 60 secs. While aria2 could download several files
in parallel (see -j option), it displayed just first download progress,
and the other downloads are hidden from the users. This new feature
prints all downloads currently in-progress to the console so that you
can check the status of all downloads. The interval can be adjusted
by --summary-interval option.
The progress readout is now cut so that all fits in the one line of
console.
* src/ConsoleStatCalc.cc
* src/ConsoleStatCalc.h
* src/HelpItemFactory.cc
* src/OptionHandlerFactory.cc
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/main.cc
* src/option_processing.cc
* src/prefs.h
* src/usage_text.h
Replaced "" with static const variable A2STR::NIL.
Replaced string comparison against "" with std::string::empty().
Added PROTO_* to Request class and use them as a protocol string
constant.
Made "started", "stopped", "completed" static const variable in
AnnounceList class.
Added the ability to reuse connection in FTP and it is enabled
by
default. It can be disabled by --ftp-reuse-connection=false
option.
* src/Command.cc
* src/DownloadCommand.cc
* src/FtpDownloadCommand.cc
* src/FtpDownloadCommand.h
* src/FtpFinishDownloadCommand.cc
* src/FtpFinishDownloadCommand.h
* src/FtpInitiateConnectionCommand.cc
* src/FtpNegotiationCommand.cc
* src/FtpNegotiationCommand.h
* src/HelpItemFactory.cc
* src/Makefile.am
* src/Makefile.in
* src/OptionHandlerFactory.cc
* src/option_processing.cc
* src/prefs.h
* src/usage_text.h
Rewritten Exception class. Throw exception object, not its pointer and
catch by reference, so that remove problematic delete operator for
catched exception.
* src/Exception.cc
* src/Exception.h
* test/ExceptionTest.cc
* src/*: All files throwing/catching exception.
* test/*: All files throwing/catching exception.
Added StringFormat class, which internally calls vasprintf.
operator<< is defined for this class, so it can be used with iostream
classes nicely. SimpleLogger and following functions are rewritten
using StringFormat class.
Besides, now Logger class's methods are non-const, many classes
that has a const Logger* as a member variable are modified to remove
const qualifier from the variable declaration.
* src/HelpItemFactory.cc
* src/Request.cc
* src/SimpleLogger.cc
* src/StringFormat.cc
* src/StringFormat.h
* src/Util.cc
* src/option_processing.cc
* src/version_usage.cc
* test/StringFormatTest.cc
* src/*.h: The classes that has const Logger* as a member variable.
Use the default value pulled from Option object in
HelpItemFactory.
except options whose defualt value is embedded in a usage text.
* src/HelpItemFactory.cc
* src/HelpItemFactory.h
* src/option_processing.cc
* src/version_usage.cc
Added --quiet option to make aria2 quiet (no console output).
--quiet option is tagged with ADVANCED.
* src/HelpItemFactory.cc
* src/LogFactory.cc
* src/LogFactory.h
* src/MultiUrlRequestInfo.cc
* src/MultiUrlRequestInfo.h
* src/NullStatCalc.h: New class. This class prints nothing.
* src/OptionHandlerFactory.cc
* src/main.cc
* src/option_processing.cc
* src/prefs.h
* src/usage_text.h
Fixed the bug that aria2 only uses first dns server in
resolv.conf
when compiled with async DNS support.
* src/DownloadEngine.cc
* src/option_processing.cc: Lengthened DNS timeout to 30. I
think old
value '10' will be a little bit short when some DNS servers are
offline and several DNS servers are tried. It should be
configured
by command-line option.
Added the ability to stop aria2 itself when given time has
passed
from start. Use --stop option to specify time in minutes.
When 0 is given, this feature is disabled.
* src/OptionHandlerFactory.cc
* src/TimeBasedCommand.h: Make _interval protected scope.
* src/HelpItemFactory.cc
* src/option_processing.cc
* src/prefs.h
* src/FillRequestGroupCommand.cc: Evaluate _e->isHaltRequested()
before calling RequestGroupMan::fillRequestGroupFromReserver().
Without this modification, the result list shows "ERR" when
aria2 is
stopped by --stop option. It should be "INPR".
* src/DownloadEngine.{h, cc}
* src/DownloadEngineFactory.cc
* src/usage_text.h
* src/TimedHaltCommand.{h, cc}: New class.
Added DHT functionality, compatible with mainline.
DHT is disabled by default. To enable it, give --enable-dht to
aria2c.
You may need to specify entry point to DHT network using
--dht-entry-point. DHT uses UDP port to listen incoming message.
Use --dht-listen-port to specify port number. Make sure that
your
firewall configuration can pass through UDP traffic to the port.
The routing table is saved in $HOME/.aria2/dht.dat.
* src/DHT*
* src/BNode.{h, cc}
* src/PeerInteractionCommand.cc: enable DHT functionality for a
particular torrent.
* src/Data.cc: Rewritten ctor.
* src/OptionHandlerFactory.cc: Added --enable-dht,
--dht-listen-port,
--dht-entry-point.
* src/DefaultBtInteractive.cc: Send port message if dht is
enabled.
* src/RequestGroup.cc: Initialize DHT functionality. When
download
ends, remove BtContext from DHTPeerAnnounceStorage.
* src/BtPortMessage.{h, cc}: Rewritten.
* src/message.h
* src/OptionHandlerImpl.cc
* src/option_processing.cc: Added --enable-dht,
--dht-listen-port,
--dht-entry-point.
* src/Dictionary.{h, cc} (remove): New function.
* src/prefs.h
* src/DefaultBtMessageFactory.h
* src/BtHandshakeMessage.cc
* src/ActivePeerConnectionCommand.cc
* src/SocketCore.{h, cc}: Added datagram socket support.
* src/DefaultBtMessageFactory.cc
* src/BtSetup.cc: Add BtContext to DHTPeerAnnounceStorage here.
Create DHT commands.
* src/BtMessageFactory.h
* src/PeerMessageUtil.{h, cc}
Fixed the bug that log file is not written when configuration
file doesn't exist.
This is caused by using Logger class before LogFactory is not
configured.
BUG #1875079
* src/option_processing.cc
Warning message "configuration doesn't exist" is only printed
when --conf is
given.
* src/option_processing.cc
Added --no-conf and --conf-path command-line option.
--no-conf option disables loading aria2.conf file.
--conf-path option changes the configuration file path. The
default
file path is $HOME/.aria2/aria2.conf
Added a warning message when the configuration file is not
found.
* src/HelpItemFactory.cc
* src/option_processing.cc
* src/prefs.h
* src/usage_text.h
Changed the default value of PREF_PEER_CONNECTION_TIMEOUT and
lowestSpeedLimit in ActivePeerConnectionCommand. TODO: Make them
command-line options.
* src/option_processing.cc
* src/ActivePeerConnectionCommand.cc
Added uTorrent compatible Peer Exchange.
* src/BencodeVisitor.{h, cc}
* test/BencodeVisitorTest.cc
* src/BtConstants.h
* src/BtContext.h: Added 'private' flag.
* src/BtExtendedMessage.{h, cc}
* test/BtExtendedMessageTest.cc
* src/BtHandshakeMessage.{h, cc}: Set extended messaging bit in
reserved field.
* test/BtHandshakeMessageTest.cc
* src/BtMessageFactory.h
* src/BtRegistry.h
* src/BtRuntime.h: This class holds default extension message
IDs for
aria2. By default, aria2 uses ID 8 for ut_pex.
* src/DefaultBtContext.cc
* src/DefaultBtInteractive.{h, cc}: This class holds
_utPexEnabled.
When it is true, aria2 enables ut_pex. This value is set by
PeerInteractionCommand.
* src/DefaultBtMessageFactory.{h, cc}
* test/DefaultBtMessageFactoryTest.cc
* src/DefaultBtMessageReceiver.cc: Moved the code of fast
extension
handling to DefaultBtInteractive class.
* src/DefaultExtensionMessageFactory.{h, cc}
* test/DefaultExtensionMessageFactoryTest.cc
* src/DefaultPeerStorage.cc: Returns false if a peer is already
in
the container(peers and incomingPeers. The equality is
determined by
Peer::id).
* test/DefaultPeerStorageTest.cc
* src/ExtensionMessage.h
* test/MockExtensionMessage.h
* src/ExtensionMessageFactory.h
* test/MockExtensionMessageFactory.h
* src/HandshakeExtensionMessage.{h, cc}
* test/HandshakeExtensionMessageTest.cc
* src/MetaEntry.h
* src/Peer.{h, cc}
* src/PeerInteractionCommand.cc
* src/PeerReceiveHandshakeCommand.cc: Evaluate the return value
of
addIncomingPeer.
* src/PeerMessageUtil.{h, cc}
* src/PeerObject.h
* src/UTPexExtensionMessage.{h, cc}
* test/UTPexExtensionMessageTest.cc
* src/message.h
* src/prefs.h
Fixed the bug that returns incomplete data when it contains null
character. A convenient constructor was also added.
* src/Data.{h, cc}
Rewritten.
* src/CompactPeerListProcessor.cc
Fixed typos.
* src/message.h
* src/MetaFileUtil.cc
If several protocols are available for a mirror, aria2 now use
one of
them. --metalink-preferred-protocol option was added to specify
the
preference of protocol.
* src/AbstractCommand.cc
* src/OptionHandlerFactory.cc
* src/ServerHost.{h, cc}
* src/Metalink2RequestGroup.cc
* src/RequestGroup.{h, cc}
* test/RequestGroupTest.cc
* src/option_processing.cc
* src/prefs.h
* src/HttpResponseCommand.cc
* src/MetalinkResource.{h, cc}
* src/FtpNegotiationCommand.cc
* src/MetalinkEntry.{h, cc}
* src/MetalinkEntryTest.cc
Fixed the bug#1841757: aria2 will connect to server to only get
file size.
* src/StreamFileAllocationEntry.cc
* src/option_processing.cc
* src/HttpResponseCommand.cc: Now reuse connection in segmented
downloads.
* src/FtpNegotiationCommand.cc
Suppressed wrong message when finding PreDownloadHandler
* src/RequestGroup.cc
Added direct I/O support. The current implementation uses O_DIRECT,
which is not posix standard and is tested on linux 2.6.21.
Currently only file allocation uses direct I/O.
* src/SingleFileAllocationIterator.{h, cc}
* test/SingleFileAllocationIteratorTest.cc
* src/MultiFileAllocationIterator.{h, cc}
* test/MultiFileAllocationIteratorTest.cc
* src/BinaryStream.h
* src/DiskWriter.h
* src/AbstractDiskWriter.{h, cc}
* src/ByteArrayDiskWriter.h
* src/DiskAdaptor.h
* src/AbstractSingleDiskAdaptor.{h, cc}
* src/MultiDiskAdaptor.{h, cc}
* src/FileAllocationEntry.cc
* src/Util.{h, cc}
* src/OptionHandlerFactory.cc
* src/prefs.h
* src/version_usage.cc
* src/option_processing.cc
Moved FileAllocationMan::markCurrentFileAllocationEntryDone() to
handleException.
* src/MultiFileAllocationIterator.cc
Added EINTR handling
* src/SocketCore.cc
Preallocate non-requested file which is adjacent forward to
requested
file('requested' files means the files given in --select-file
option)
if they share a same piece.
This fixes long pause in the file system which doesn't support
sparse
files like FAT32 while downloading.
* src/MultiFileAllocationIterator.{h, cc}
* test/MultiFileAllocationIteratorTest.cc
* src/FileEntry.{h, cc}
Removed unused _option.
* src/MultiDiskAdaptor.h
* test/MultiDiskAdaptorTest.cc
* src/DefaultPieceStorage.cc
Set the default value of --seed-ratio to 1.0.
If 0.0 is given, then seeding continues regardless of share
ratio.
* src/version_usage.cc
* src/option_processing.cc
* src/BtSetup.cc
* doc/aria2c.1.txt
* doc/aria2c.1
Fixed: Selective download is not working in BitTorrent
* src/RequestGroup.cc
Introduced Sequence class. Use this instead of
Util::unfoldRange()
* src/PieceStorage.h
* test/MockPieceStorage.h
* src/UnknownLengthPieceStorage.h
* src/DefaultPieceStorage.{h, cc}
* src/Metalink2RequestGroup.cc
* src/RequestGroup.cc
* src/Sequence.h
* test/SequenceTest.cc
* src/IntSequence.h
* src/message.h
* src/Util.{h, cc}
* test/UtilTest.cc
Added new function 'parse' to catch exception thrown by
subclass's
parseArg
* src/OptionHandler.h
* src/OptionParser.cc
* src/NameMatchOptionHandler.h
* src/OptionHandlerImpl.h
* test/OptionHandlerTest.cc
Added IntegerRangeOptionHandler. Used for --listen-port and
--select-file. Now --listen-port accepts range of port.
* src/OptionHandlerFactory.cc
* src/version_usage.cc
* src/OptionHandlerImpl.h
* src/option_processing.cc
* src/BtSetup.cc
* src/PeerListenCommand.{h, cc}
* doc/aria2c.1.txt
* doc/aria2c.1
Implemented operator< for Exception class to provide easy way to
print
exception stack trace.
* src/Exception.{h, cc}
* src/main.cc
* src/option_processing.cc
Implemented BitTorrent/http/ftp integrated download.
I've rewritten lots of files and now some headers have forward
class declarations to reduce compile time.
The implementation is extremely alpha stage, I recommend to use this
for testing purpose only.