summaryrefslogtreecommitdiff
path: root/src/AbstractCommand.cc
Commit message (Collapse)AuthorAgeFilesLines
* 2008-12-16 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2008-12-151-7/+1
| | | | | | | | | | | | | | | Fixed the bug that causes corrupted downloads if HTTP pipelining is enabled and the server doesn't support keep-alive. * src/AbstractCommand.cc * src/DownloadCommand.cc * src/HttpDownloadCommand.cc * src/HttpDownloadCommand.h * src/HttpResponseCommand.cc * src/Request.cc * src/Request.h * test/RequestTest.cc
* 2008-11-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2008-11-111-1/+2
| | | | | | | | | | | | Quickly terminate idle commands when download finished. * src/AbstractCommand.cc * src/DownloadCommand.cc * src/DownloadEngine.cc * src/DownloadEngine.h * src/SleepCommand.cc * src/SleepCommand.h
* 2008-11-09 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2008-11-091-1/+38
| | | | | | | | | | | | | | | | | 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
* 2008-11-04 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-11-041-1/+1
| | | | | | | | | | | | | | Renamed --http-proxy-method as --proxy-method. * src/AbstractCommand.cc * src/FtpInitiateConnectionCommand.cc * src/HttpInitiateConnectionCommand.cc * src/OptionHandlerFactory.cc * src/option_processing.cc * src/prefs.cc * src/prefs.h * src/usage_text.h
* 2008-11-04 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-11-041-10/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Deprecated --http-proxy-user and --http-proxy-passwd options. Added --https-proxy, --ftp-proxy and --all-proxy options. Above 3 options and --http-proxy option can handle proxy in URL format like: http://user:passwd@host:port. If a proxy requires user/password, they must be specified in a URL. Deprecated --ftp-via-http-proxy option. Use --http-proxy-method option instead. * src/AbstractCommand.cc * src/AbstractCommand.h * src/AbstractProxyRequestCommand.cc * src/AbstractProxyRequestCommand.h * src/AuthConfigFactory.cc * src/AuthConfigFactory.h * src/FtpFinishDownloadCommand.cc * src/FtpInitiateConnectionCommand.cc * src/FtpInitiateConnectionCommand.h * src/FtpNegotiationCommand.cc * src/FtpTunnelRequestCommand.cc * src/FtpTunnelRequestCommand.h * src/HttpDownloadCommand.cc * src/HttpInitiateConnectionCommand.cc * src/HttpInitiateConnectionCommand.h * src/HttpProxyRequestCommand.cc * src/HttpProxyRequestCommand.h * src/HttpRequest.cc * src/HttpRequest.h * src/HttpRequestCommand.cc * src/HttpRequestCommand.h * src/HttpSkipResponseCommand.cc * src/InitiateConnectionCommand.cc * src/InitiateConnectionCommand.h * src/OptionHandlerFactory.cc * src/OptionHandlerImpl.h * src/Request.cc * src/option_processing.cc * src/prefs.cc * src/prefs.h * src/usage_text.h * test/AuthConfigFactoryTest.cc * test/HttpRequestTest.cc * test/OptionHandlerTest.cc
* 2008-09-27 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-09-271-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | Fixed the bug that HTTPS download fails. * src/AbstractCommand.cc * src/AbstractCommand.h * src/DownloadCommand.cc * src/FtpConnection.cc * src/HttpConnection.cc * src/HttpRequestCommand.cc * src/HttpResponseCommand.cc * src/HttpSkipResponseCommand.cc * src/MSEHandshake.cc * src/PeerConnection.cc * src/SocketCore.cc * src/SocketCore.h Fixed the bug that aria2 doesn't download whole content body and cannot reuse connection if chunked transfer encoding and gzip content encoding are set. * src/DownloadCommand.cc * src/HttpSkipResponseCommand.cc
* 2008-09-23 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-09-231-0/+2
| | | | | | | | Added debug log for socket event. * src/AbstractCommand.cc * src/PeerAbstractCommand.cc
* 2008-09-16 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-09-161-13/+13
| | | | | | | | | | Moved isProxyGETRequest function outside #ifdef ENABLE_ASYNC_DNS clause to fix compile error when async DNS is not enabled by configuration. * src/AbstractCommand.cc
* 2008-09-14 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-09-141-7/+39
| | | | | | | | | | | | | | | | 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
* 2008-09-14 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-09-141-1/+3
| | | | | | | | | | | | If error event is received in epoll, then abort download immediately. * src/AbstractCommand.cc * src/Command.cc * src/Command.h * src/DownloadEngine.cc * src/PeerAbstractCommand.cc
* 2008-09-14 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-09-131-0/+1
| | | | | | | | | Call Download::setNoWait(true) to execute newly created command without a pause. * src/AbstractCommand.cc
* 2008-09-03 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-09-031-0/+1
| | | | | | | | | | | | | If an error occurred with a URI, remove identical URI from remaining URI list because it is likely that same error occurred in the end and it is waste of time. * src/AbstractCommand.cc * src/RequestGroup.cc * src/RequestGroup.h
* 2008-08-05 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-08-041-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* 2008-07-19 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-07-181-0/+2
| | | | | | | | | | | | | | | | Supported absolute/relative path in Location header field. * src/AbstractCommand.cc: Call resetUrl() when DlRetryEx is caught. * src/HttpHeader.cc * src/HttpHeader.h * src/HttpResponse.cc * src/HttpSkipResponseCommand.cc * src/Request.cc * test/HttpHeaderTest.cc * test/HttpResponseTest.cc * test/RequestTest.cc
* 2008-06-17 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-06-171-0/+1
| | | | | | | | | | | Cancel download if http redirect is bounded more than 20 times. * src/AbstractCommand.cc * src/HttpSkipResponseCommand.cc * src/Request.cc * src/Request.h * test/RequestTest.cc
* 2008-06-05 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-06-041-0/+1
| | | | | | | | Fixed busy loop when error/hup epoll events occur. * src/AbstractCommand.cc * src/PeerAbstractCommand.cc
* 2008-05-31 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-05-311-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added epoll support. Use epoll if it is available. If not, use select. When async dns is enabled in compile time, epoll support is enabled only when aria2 is built with c-ares. This condition statement is defined in a2io.h. Currently aria2 supports both c-ares and ares, but ares is maintained for quite a while and debian already has c-ares package, ares support will be dropped in the future version. * configure.ac * src/AbstractCommand.cc * src/AsyncNameResolver.cc * src/AsyncNameResolver.h * src/Command.cc * src/Command.h * src/DownloadEngine.cc * src/DownloadEngine.h * src/PeerAbstractCommand.cc * src/SocketCore.cc * src/SocketCore.h * src/a2io.h
* 2008-05-17 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-05-171-18/+4
| | | | | | | | | | | | | | | | | Don't add closed socket to DownloadEngine::addSocketForReadCheck() * src/AbstractCommand.cc * src/AbstractCommand.h * src/ActivePeerConnectionCommand.cc * src/FtpInitiateConnectionCommand.cc * src/HttpInitiateConnectionCommand.cc * src/InitiateConnectionCommandFactory.cc * src/PeerAbstractCommand.cc * src/PeerAbstractCommand.h * src/PeerInitiateConnectionCommand.cc * src/TrackerWatcherCommand.cc
* 2008-05-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-05-111-1/+2
| | | | | | | | | | | Changed method signature: SegmentMan::getInFlightSegment * src/AbstractCommand.cc * src/SegmentMan.cc * src/SegmentMan.h * test/SegmentManTest.cc
* 2008-05-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-05-111-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Pass std::deque<Command*> by reference to avoid unnecessary coping. * src/AbstractCommand.cc * src/BtCheckIntegrityEntry.cc * src/BtCheckIntegrityEntry.h * src/BtFileAllocationEntry.cc * src/BtFileAllocationEntry.h * src/BtSetup.cc * src/BtSetup.h * src/CheckIntegrityCommand.cc * src/CheckIntegrityEntry.h * src/ChecksumCheckIntegrityEntry.cc * src/ChecksumCheckIntegrityEntry.h * src/DHTSetup.cc * src/DHTSetup.h * src/DownloadEngine.cc * src/FileAllocationCommand.cc * src/FileAllocationEntry.h * src/RequestGroup.cc * src/RequestGroup.h * src/RequestGroupMan.cc * src/RequestGroupMan.h * src/StreamCheckIntegrityEntry.cc * src/StreamCheckIntegrityEntry.h * src/StreamFileAllocationEntry.cc * src/StreamFileAllocationEntry.h * src/TrackerWatcherCommand.cc * src/a2functional.h
* 2008-05-10 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-05-101-4/+0
| | | | | | | Removed duplicate log message. * src/AbstractCommand.cc (asyncResolveHostname)
* 2008-05-08 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-05-081-44/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rewritten name resolver. Now async DNS can be disabled by --async-dns option. The asynchronous DNS is not capable of IPv6 yet. By disabling asynchronous DNS, aria2 is IPv6 enabled application, at least for HTTP download. * src/AbstractCommand.cc * src/AbstractCommand.h * src/AsyncNameResolver.cc * src/AsyncNameResolver.h * src/DHTEntryPointNameResolveCommand.cc * src/DHTEntryPointNameResolveCommand.h * src/DownloadEngine.cc * src/DownloadEngine.h * src/FtpInitiateConnectionCommand.cc * src/FtpInitiateConnectionCommand.h * src/HelpItemFactory.cc * src/HttpInitiateConnectionCommand.cc * src/HttpInitiateConnectionCommand.h * src/InitiateConnectionCommand.cc * src/InitiateConnectionCommand.h * src/Makefile.am * src/Makefile.in * src/NameResolver.cc * src/NameResolver.h * src/OptionHandlerFactory.cc * src/SocketCore.cc * src/SocketCore.h * src/Util.cc * src/Util.h * src/option_processing.cc * src/prefs.h * src/usage_text.h
* 2008-04-27 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-04-271-15/+12
| | | | | | | | | | | | | 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.
* 2008-04-22 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-04-221-0/+1
| | | | | | | | | | | | | | | | | Reuse socket if the origin server supports HTTP keep-alive and --enable-http-keep-alive or --enable-http-pipelining is given. The current implementation doesn't reuse the connections established against proxy server. * src/AbstractCommand.cc * src/DownloadEngine.cc * src/DownloadEngine.h * src/HttpDownloadCommand.cc * src/HttpInitiateConnectionCommand.cc * src/HttpResponseCommand.cc
* 2008-04-22 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-04-221-1/+1
| | | | | | | | | | | | | | | | | | Rewritten HTTP keep-alive and pipelining routine. * src/AbstractCommand.cc * src/HttpConnection.cc * src/HttpDownloadCommand.cc * src/HttpRequest.cc * src/HttpRequestCommand.cc * src/HttpResponseCommand.cc * src/Request.cc * src/Request.h * src/RequestGroup.cc * test/HttpRequestTest.cc * test/HttpResponseTest.cc * test/RequestTest.cc
* 2008-04-20 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-04-201-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Eliminates the time lag between sequential downloads and commands in the same RequestGroup. In old implementation, aria2 occasionally waits 1 seconds before executing next command or RequestGroup. This is really a waste of time, and new implementation eliminates this unnecessary time lag. * src/AbstractCommand.cc * src/AutoSaveCommand.cc * src/CheckIntegrityCommand.cc * src/Command.{cc, h} * src/DownloadEngine.{cc, h} * src/DownloadEngineFactory.cc * src/FileAllocationCommand.cc * src/FileAllocationDispatcherCommand.cc * src/FillRequestGroupCommand.cc * src/FtpInitiateConnectionCommand.cc * src/HaveEraseCommand.cc * src/HttpInitiateConnectionCommand.cc * src/HttpResponseCommand.cc * src/RealtimeCommand.cc * src/RequestGroup.cc * src/RequestGroupMan.cc * src/StreamFileAllocationEntry.cc * src/TimeBasedCommand.{cc, h} * src/TimedHaltCommand.cc
* 2008-04-20 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-04-201-3/+2
| | | | | | | | | | | | | | | Rewritten SharedHandle. Now copy constructor taking raw pointer has keyword explicit and SharedHandle's default constructor initializes its internal obj to null, old implementation initializes it using obj's default constructor. To assign null, write SharedHandle<T> x(...); x.reset(); TODO: test/SharedHandleTest.cc needs more tests. * src/SharedHandle.h
* 2008-03-15 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-03-151-4/+4
| | | | | | | Fixed compilation error with g++-4.3
* 2008-03-09 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-03-091-4/+4
| | | | | | type cleanup for allmost all remaining files.
* 2008-02-08 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2008-02-081-11/+32
| | | | | | | | | Removed "using namespace std;" from all sources. Appended std:: prefix to c++ standard classes. Included string.h where mem* function are used.
* 2007-12-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-12-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | 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
* 2007-11-10 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-11-091-133/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't connect server before checking file integrity at startup, if filesize and output file path are known. * src/AbstractCommand.cc * src/StreamFileAllocationEntry.cc * src/Metalink2RequestGroup.cc * src/RequestGroup.{h, cc} * src/HttpResponseCommand.cc * src/FtpNegotiationCommand.cc Added DownloadFailureException. If it is thrown, RequestGroup should halt. * src/AbstractCommand.cc * src/DownloadFailureException.h * src/RequestGroup.cc Catch RecoverableException, instead of DlAbortEx. * src/RequestGroupMan.cc * src/FillRequestGroupCommand.cc * src/MetaFileUtil.cc * src/IteratableChunkChecksumValidator.cc Now first parameter of MSG_DOWNLOAD_ABORTED is gid(RequestGroup:: getGID()) * src/CheckIntegrityCommand.cc * src/message.h Print gid instead of idx. * src/RequestGroupMan.cc Removed exception throwers declaration. * src/DirectDiskAdaptor.{h, cc} * src/SocketCore.{h, cc} * src/MultiDiskAdaptor.{h, cc} * src/HttpConnection.{h, cc} * src/HttpResponse.{h, cc} * src/DiskAdaptor.{h, cc} * src/CopyDiskAdaptor.{h, cc} * src/MultiDiskAdaptor.{h, cc} * src/HttpHeaderProcessor.{h, cc} * src/AbstractSingleDiskAdaptor.{h, cc} * src/Util.{h, cc} * test/UtilTest.cc * src/DefaultDiskWriter.{h, cc} * src/FtpConnection.{h, cc} * src/AbstractDiskWriter.{h, cc} Removed duplicate code. * src/StreamCheckIntegrityEntry.cc Removed unnecessary include. * src/DiskWriter.h Included Exception.h * src/option_processing.cc Included 2 files and added doc * src/TrackerWatcherCommand.cc * src/SocketCore.cc (writeData): Fixed send error with GnuTLS.
* 2007-11-08 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-11-081-1/+1
| | | | | | | | | | | | | | | | | | | Changed CheckIntegrityEntry interface so that it can define the action when all the chunk checksums are valid. * src/CheckIntegrityEntry.h * src/StreamCheckIntegrityEntry.{h, cc} * src/BtCheckIntegrityEntry.{h, cc}: Currently,when all the checksums are valid, then aira2 goes to seeding mode. Sometimes it is better to exit rather than doing seeding. So, it would be good to toggle this behavior. * src/CheckIntegrityCommand.cc * src/AbstractCommand.cc * src/RequestGroup.cc
* 2007-11-06 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-11-051-8/+2
| | | | | | | | | Fixed: Can not resume: aria2 reports download already finished. * src/AbstractCommand.{h, cc} * src/HttpResponseCommand.cc * src/FtpNegotiateCommand.cc
* 2007-10-18 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-10-171-5/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added HTTP/1.1 keep alive and pipelining support. See --enable-http-keep-alive and --enable-http-pipelining option. * src/AbstractCommand.{h, cc}: Now it has one-to-many relation to Segment. * src/HttpDownloadCommand.{h, cc} * src/OptionHandlerFactory.cc * src/HttpConnection.{h, cc} * src/version_usage.cc * src/HttpInitiateConnectionCommand.cc * src/FtpInitiateConnectionCommand.cc * src/Segment.h * src/HttpRequestCommand.{h, cc} * src/option_processing.cc * src/prefs.h * src/HttpResponseCommand.cc * src/SegmentMan.{h, cc} * src/FtpNegotiateCommand.cc * src/HttpProxyResponseCommand.cc * src/Request.cc * src/HttpRequest.cc * src/DownloadCommand.cc * test/HttpRequestTest.cc * test/RequestTest.cc
* 2007-10-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-10-111-24/+176
| | | | | | | | | | 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.
* 2007-07-21 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-07-211-2/+2
| | | | | | | Converted int's to in32_t. long long int's are also converted to int64_t
* 2007-07-20 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-07-201-8/+8
| | | | | | | | | | | | | | | | | | | | | | Fixed the bug that prevents cookies from being sent to the server if the domain of cookie is FQDN and starts with ".". * src/Cookie.cc (match) To add the ability to change peer id. * src/DefaultBtContext.h (_peerIdPrefix): New variable (setPeerIdPrefix): New function. * src/torrentRequestInfo.cc (execute): Set the option value of PREF_PEER_ID_PREFIX to DefaultBtContext. * src/main.cc (main): Added peer-id-prefix command-line option. The usage message is not added yet. * src/DefaultBtContext.cc (generatePeerId): Use _peerIdPrefix. * src/prefs.h (PREF_PEER_ID_PREFIX): New definition.
* 2007-06-10 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-06-101-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/AbstractCommand.cc (execute): Changed log level of MSG_RESTARTING_DOWNLOAD and MSG_MAX_TRY from error to info. Added MSG_DOWNLOAD_ABORTED after MSG_MAX_TRY. * src/message.h (MSG_TORRENT_DOWNLOAD_ABORTED): New definition. (MSG_DOWNLOAD_ABORTED): Added %s. (MSG_RESTARTING_DOWNLOAD): Added %s. (MSG_DOWNLOAD_ALREADY_COMPLETED): Updated. * src/PeerAbstractCommand.cc (execute): MSG_DOWNLOAD_ABORTED -> MSG_TORRENT_DOWNLOAD_ABORTED * src/Request.h (cookieBox): Made ShardHandle. * src/RequestGroup.h, src/RequestGroup.cc (createNextCommandWithAdj): New function. * src/FileAllocationCommand.cc (executeInternal): Use createNextCommandWithAdj(). * src/CheckIntegrityCommand.cc (executeInternal): Use createNextCommandWithAdj(). Added --load-cookies command-option. * src/OptionHandlerFactory.cc (createOptionHandlers): Added PREF_LOAD_COOKIES. * src/CookieBox.h, src/CookieBox.cc: Rwritten using CookieParser. Now aria2 can handle cookie's expiration date. * src/Cookie.h (expires): Changed its type to time_t. * src/main.cc: Added --load-cookies command-line option. * src/prefs.h (PREF_LOAD_COOKIES): New definition. * src/Util.h, src/Util.cc (httpGMT): New function. * src/Request.cc (Request): Initialize cookieBox using CookieBoxFactory. * src/CookieBoxFactory.h, src/CookieBoxFactory.cc: New class. * src/CookieParser.h, src/CookieParser.cc: New class. * src/main.cc: Chagned the default value of --metalink-servers to 5. * src/HttpResponseCommand.cc (handleOtherEncoding): Call RequestGroup::shouldCancelDownloadForSafety
* 2007-06-03 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-06-031-1/+1
| | | | | | | | | | | | | | | | | | | | | RequestGroup::getNextCommand() was renamed to createNextCommand(). Added its overloaded method. * src/RequestGroup.h (_numConcurrentCommand): New variable. (setNumConcurrentCommand): New function. * src/RequestGroup.cc Abort download if same file is being downloaded concurrently. * src/RequestGroup.h, src/RequestGroupMan.cc (isSameFileBeingDownloaded): New function. * src/HttpResponseCommand.cc (executeInternal) * src/FtpNegotiateCommand.cc (recvSize) * src/message.h (EX_DUPLICATE_FILE_DOWNLOAD): New definition. * main.cc: Added help message for -i option.
* 2007-05-20 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-05-201-18/+25
| | | | | | * Added the simultaneous download feature.
* 2007-03-28 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-03-281-22/+41
| | | | | | | | | | | | | | | | | | | | To cache resolved hostname: * src/AbstractCommand.h, src/AbstractCommand.cc (resolveHostname): Put outside #ifdef ENABLE_ASYNC_DNS clause. Added dns cache. * src/FtpInitiateConnectionCommand.cc (executeInternal): Removed #ifdef ENABLE_ASYNC_DNS. * src/NameResolver.h, src/NameResolver.cc: Added synchronized NameResolver working without ares. * src/TorrentRequestInfo.cc (execute): Don't cache dns in torrent download. * src/HttpInitiateConnectionCommand.cc (executeInternal): Removed #ifdef ENABLE_ASYNC_DNS * src/DNSCache.h: New class. * src/UrlRequestInfo.cc (execute): Use dns cache
* 2007-03-15 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-03-151-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To handle Segment as SegmentHandle: * src/AbstractCommand.cc (execute): Rewritten. * src/SegmentMan.h: Segment -> SegmentHandle Introducded HttpResponse class, HttpRequest class to improve code extensiveness and make it clear: * src/HttpDownloadCommand.cc: transfer encoders are now managed by HttpResponse class. * src/HttpRequest.h, src/HttpRequest.cc: New class. * src/HttpResponse.h, src/HttpResponse.cc: New class. * src/HttpConnection.cc: Contruction of http request were moved to HttpRequest class. * src/HttpResponseCommand.h, src/HttpResponseCommand.cc: Refactored. * src/HttpRequestCommand.cc (executeInternal): Rewritten. * src/HttpAuthConfig.h: New class. * src/Range.h: New class. To make FtpTunnel{Request, Response}Command and HttpProxy{Request, Response}Command derived from AbstractProxy{Request, Response}Command: * src/FtpTunnelResponseCommand.h, src/FtpTunnelResponseCommand.cc: Derived from AbstractProxyRequestCommand class. * src/FtpTunnelRequestCommand.h, src/FtpTunnelRequestCommand.cc: Derived from AbstractProxyResponseCommand class. * src/HttpProxyRequestCommand.h, src/HttpProxyRequestCommand.cc: Derived from AbstractProxyRequestCommand class. * src/HttpProxyResponseCommand.h, src/HttpProxyResponseCommand.cc: Derived from AbstractProxyResponseCommand class. * src/AbstractProxyRequestCommand.h, src/AbstractProxyRequestCommand.cc : New class. * src/AbstractProxyResponseCommand.h, src/AbstractProxyResponseCommand.cc: New class. To add netrc support: * src/Netrc.h, src/Netrc.cc: New class. * src/Util.h, src/Util.cc (split): New function. * src/HttpHeader.cc (getRange): Fixed so that it inspects "Content-Range" header instead of "Range" header. * src/HttpHeader.h (getStatus): Removed. (setStatus): Removed. * src/Segment.h (getPositionToWrite): New function.
* 2007-01-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2007-01-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To add RecoverableException, FatalException: * src/AbstractCommand.cc (onAbort): Exception -> RecoverableException * src/PeerAbstractCommand.h (RecoverableException.h): New include. (onAbort): Exception -> RecoverableException. * src/PeerInteractionCommand.cc (onAbort): Exception -> RecoverableException. * src/PeerAbstractCommand.cc (execute): Exception -> RecoverableException. (onAbort): Exception -> RecoverableException. * src/TorrentRequestInfo.cc (execute): Exception -> RecoverableException. * src/MetalinkRequestInfo.cc (execute): Exception -> RecoverableException. * src/MetaFileUtil.cc: RecoverableException. * src/AbstractCommand.h (onAbort): Exception -> RecoverableException. * src/DlRetryEx.h: Exception -> RecoverableException. * src/DlAbortEx.h: Exception -> RecoverableException. * src/PeerListenCommand.cc: Exception -> RecoverableException. * src/Util.cc: Exception -> RecoverableException. * src/DefauldDiskWriter.cc: Exception -> RecoverableException. * src/TrackerUpdateCommand.cc: Exception -> RecoverableException. * src/UrlRequestInfo.cc: Exception -> RecoverableException. To make ID static const int * src/BtInterestedMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtPieceMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtChokeMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtHaveAllMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtKeepAliveMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtHandshakeMessage.h (ID): New variable. (getId): Made non-const. * src/BtSuggestPieceMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtPortMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/AbstractBtMessage.h (id): Removed. (AbstractBtMessage): Removed id. (getId): Removed. * src/BtHaveMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtAllowedFastMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtCancelMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtNotInterestedMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtChokeMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtRejectMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtBitfieldMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtUnchokeMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtRequestMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. * src/BtHaveMessage.h (ID_t): Removed. (ID): New variable. (getId): Made non-const. To add --force-truncate command-line option and a check whether the file already exists: * src/DirectDiskAdaptor.h (getFilePath): Made virtual public. * src/MultiDiskAdaptor.h (File.h): New include. (DiskWriterEntry::fileEntry): Made private. (DiskWriterEntry::fileExists): New function. (DiskWriterEntry::getFileEntry): New function. (fileExists): New function. (getFilePath): New function. * src/TorrentRequestInfo.cc (FatalException.h): New include. (message.h): New include. (RecoverableException.h): New include. (execute): Added a check whether file is already exists or not. * src/DiskAdaptor.h (fileExists): New function. (getFilePath): New function. * src/main.cc (showUsage): Added an explanation of --force-truncate command-line option. (main): Added --force-truncate command-line option. * src/Exception.h (setMsg): buf[256] -> buf[1024] * src/CopyDiskWriter.h (getFilePath): Made public virtual. * src/MultiDiskAdaptor.cc: fileEntry -> getFileEntry() (fileExists): New function. * src/DownloadEngineFactory.cc (newTorrentConsoleEngine): Don't open file here. * src/message.h (EX_FILE_ALREADY_EXISTS): New definition. * src/prefs.h (PREF_FOECE_TRUNCATE): New definition. * src/HttpResponseCommand.cc (handleDefaultEncoding): Added a check whether the file already exists. * src/SegmentMan.h (fileExists): New function. (shouldCancelDownloadForSafety): New function. * src/FtpNegotiateCommand.cc (recvSize): Added a check whether the file already exists. * src/AbstractSingleDiskAdaptor.cc (File.h): New include. (fileExists): New function. * src/AbstractSingleDiskAdaptor.h (getFilePath): Removed. (fileExists): New function. * src/SegmentMan.cc (fileExists): New function. (shouldCancelDownloadForSafety): New function. To fix regression bug in torrent downloading: * src/DefaultBtRequestFactory.cc (doChokedAction): New function. * src/DefaultBtRequestFactory.h (doChokedAction): New function. * src/DefaultBtMessageDispatcher.cc (doChokedAction): Do not delete request if its target is in allowed fast set. * src/DefaultBtInteractive.cc (doPostHandshakeProcessing): Added a call to sendPendingMessage(). (sendKeepAlive): Send keep alive message even if the outgoing message queue is not empty. (decideInterest): Simplified the code. (fillPiece): Remove a call to dispatcher->doChokedAction() because it is already called when BtChokeMessage is received from a peer. * src/BtRequestFactory.h (doChokedAction): New function. To clean up code: * src/PeerInteractionCommand.h (executeInternal): Added virtual keyword explicitly. (prepareForRetry): Added virtual keyword explicitly. (prepareForNextPeer): Added virtual keyword explicitly. (onAbort): Added virtual keyword explicitly. * src/RequestSlot.cc (isTimeout): Use Time::elapsed() instead of differenceInMillis(). * src/BtPieceMessage.cc (doReceivedAction): Added a debug log of piece's bitfield. * src/Piece.h (getBitfieldLength): New function. * src/ByteArrayDiskWriter.cc (clear): Added buf = 0 to avoid double free corruption. * src/FileAllocator.cc (allocate): Fixed an assignment of fileAllocationMonitor->currentValue. Added cp.reset(). * src/BitfieldMan.h (operator=): Rewritten. * src/BitfieldMan.cc (BitfieldMan): Initialized bitfield, useBitfield. * src/PeerConnection.cc (receiveMessage): Added a call to socket->readable() after getting message length to avoid possible EOF. * src/Util.cc (torrentUrlencode): Fixed an encodeing bug. BUG#1629912
* 2006-10-18 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2006-10-181-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Request -> RequestHandle: * src/HttpResponseCommand.h: Request->RequestHandle * src/AbstractCommand.cc: Request->RequestHandle * src/HttpDownloadCommand.cc: Request->RequestHandle * src/HttpRequestCommand.cc: Request->RequestHandle * src/FtpInitiateConnectionCommand.h: Request->RequestHandle * src/AbstractCommand.h: Request->RequestHandle * src/HttpProxyRequestCommand.h: Request->RequestHandle * src/HttpResponseCommand.cc: Request->RequestHandle * src/HttpInitiateConnectionCommand.h: Request->RequestHandle * src/FtpNegotiateCommand.cc: Request->RequestHandle * src/FtpTunnelResponseCommand.h: Request->RequestHandle * src/HttpConnection.h: Request->RequestHandle * src/HttpProxyResponseCommand.cc: Request->RequestHandle * src/InitiateConnectionCommandFactory.h: Request->RequestHandle * src/FtpTunnelResponseCommand.cc: Request->RequestHandle * src/DownloadCommand.h: Request->RequestHandle * src/FtpDowndloadCommand.cc: Request->RequestHandle * src/HttpInitiateConnectionCommand.cc: Request->RequestHandle * src/HttpRequestCommand.h: Request->RequestHandle * src/FtpNegotiateCommand.h: Request->RequestHandle * src/FtpTunnelResponseCommand.cc: Request->RequestHandle * src/FtpInitiateConnectionCommand.cc: Request->RequestHandle * src/HttpDownloadCommand.h: Request->RequestHandle * src/FtpConnection.cc: Request->RequestHandle * src/InitiateConnectionCommandFactory.cc: Request->RequestHandle * src/UrlRequestInfo.cc: Request->RequestHandle * src/HttpProxyResponseCommand.h: Request->RequestHandle * src/HttpConnection.h: Request->RequestHandle * src/DownloadCommand.cc: Request->RequestHandle * src/FtpConnection.h: Request->RequestHandle * src/FtpDowndloadCommand.h: Request->RequestHandle * src/HttpProxyRequestCommand.cc: Request->RequestHandle * src/FtpTunnelRequestCommand.h: Request->RequestHandle * src/Request.h (SharedHandle.h): New include. (RequestHandle): New type definition. (Requests): Redefined. To add MULTITRACKER support: * src/TrackerWatcherCommand.h (createRequestCommand): New function. * src/DownloadEngineFactory.cc (newTorrentConsoleEngine): Removed req. * src/prefs.h (PREF_TRACKER_MAX_TRIES): New definition. * src/TorrentMan.cc (TorrentMan): Removed req. Added trackerNumTry. (~TorrentMan): Removed req. (setupInternal1): Added announceList. * src/TorrentRequestInfo.cc (execute): Set PREF_MAX_TIRES to 1. The max number of tries for announces is now specified by PREF_TRACKER_MAX_TRIES. * src/main.cc (main): Added PREF_TRACKER_MAX_TRIES. * src/TorrentMan.h (Request.h): Removed. (AnnounceList.h): New include. (trackerNumTry): New variable. (req): Removed. (announceList): New variable. * src/TrackerWatcherCommand.cc (execute): Rewritten. (createRequestCommand): New function. * src/TrackerUpdateCommand.cc (execute): Updated with the use of AnnounceList. * src/AnnounceList.cc: New class. * src/AnnounceList.h: New class. To fix typo: * src/prefs.h (PREF_MAX_TRIES): max_try->max_tries To not to decode "+" as space in URL decode: * src/Util.cc (urldecode): Removed "+"->space decoding rule. Test case was updated.
* 2006-10-01 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2006-10-011-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To add timeout to async name resolution: * src/AbstractCommand.h (nameResolveFinished): New function. This is not elegant way. It needs to be more refined. (nameResolverCheck): New variable. * src/AbstractCommand.cc (AbstractCommand): Added nameResolverCheck. (execute): Added the check whether the name resolution has finished. (setNameResolverCheck): Set nameResolverCheck to true. (disableNameResolverCheck): Set nameResolverCheck to false. (nameResolverFinished): New function. * src/FtpInitiateConnectionCommand.h (nameResolverFinished): New function. * src/HttpInitiateConnectionCommand.h (nameResolverFinished): New function. To add the support for a non-compact response from a tracker: * src/PeerListProcessor.h: New class. * src/DefaultPeerListProcessor.h: New class. * src/DefaultPeerListProcessor.cc: New class. * src/CompactPeerListProcessor.h: New class. * src/CompactPeerListProcessor.cc: New class. * src/DelegatingPeerListProcessor.h: New class. * src/DelegatingPeerListProcessor.cc: New class. * src/TorrentMan.cc (addPeer): New function(overload). (addPeer): Delete unused peers only when new peer is added. * src/TorrentMan.h (PeerListProcessor.h): Included. (Peers): Removed. (addPeer): New function(overload). * src/TrackerUpdateCommand.cc (netinet/in.h): Removed. (DelegatingPeerListProcessor.h): Included. (execute): Updated to use DelegatingPeerListProcessor. To fix the memory leak in TorrentMan::peers: * src/PeerAbstractCommand.cc (onAbort): Added peer->resetStatus(). * src/Peer.h (resetStatus): Made public. To improve the precision of the speed calculation: * src/SpeedCalc.h (nextInterval): New variable. * src/SpeedCalc.cc (reset): Added nextInterval. (isIntervalOver): Use nextInterval instead of CHANGE_INTERVAL_SEC. (changeSw): Set nextInterval to 15 seconds relative to the current instant time. * src/main.cc (showVersion): Updated.
* 2006-09-22 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2006-09-211-2/+15
| | | | | | | | * src/*.{h,cc}: Added an exception to the license which allows linking with OpenSSL.
* 2006-09-21 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2006-09-211-5/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/AbstractCommand.cc (execute): Check whether the download has finished before checking socket status. Return true if peerStat->getStatus() == REQUEST_IDLE. Do not exit even if no segment is available. * src/prefs.h (PREF_STARTUP_IDLE_TIME): New definition. * src/PeerInteractionCommand.cc (executeInternal): Removed max speed limit. Because it performs bad. (receiveMessages): Added max speed limit. This was better than above, but still a little bit to be desired. Sometimes the download speed became much faster than I specified. * src/SpeedCalc.h (start): New variable. (accumulatedLength): New variable. (getAvgSpeed): New function. * src/SpeedCalc.cc (reset): Added start, accumulatedLength. (update): Added calculation of an average speed. (getAvgSpeed): New function. * src/DownloadCommand.h (sw): Removed. * src/main.cc (main): Added PREF_STARTUP_IDLE_TIME. * src/PeerStat.h (STATUS): Added REQUEST_IDLE. (getMaxSpeed): Renamed as getMaxDownloadSpeed(). (getAvgDownloadSpeed): New function (requestIdle): New function. * src/SegmentMan.h (SegmentEntryHandle): New type definition. (SegmentEntries): Now holds SegmentEntryHandle. (findSlowerSegmentEntry): New funtion. * src/SegmentMan.cc (save): Updated according to the changes in SegmentEntries. (read): Updated according to the changes in SegmentEntries. (FindSegmentEntryByIndex): Updated according to the changes in SegmentEntries. (FindSegmentEntryByCuid): Updated according to the changes in SegmentEntries. (checkoutSegment): Updated according to the changes in SegmentEntries. (onNullBitfield): Updated according to the changes in SegmentEntries. Renamed uitr as itr. (findSlowerSegmentEntry): New function. (getSegment): Updated according to the changes in SegmentEntries. Added the feature that cancels the segment with slow server and fast one takes it over. (cancelSegment): Updated according to the changes in SegmentEntries. (getDownloadLength): Updated according to the changes in SegmentEntries. (init): Assigned 0 to bitfield after deleting it. * src/DownloadCommand.cc (STARTUP_IDLE_TIME): Removed. (executeInternal): Use PREF_STARTUP_IDLE_TIME.
* 2006-09-19 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2006-09-191-7/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To rewrite segment download mechanism for HTTP/FTP download. Use BitfieldMan to manage segment download. * src/HttpResponseCommand.h (executeInternal): Pass the reference of segment. * src/AbstractCommand.cc (prepareForRetry): Call segmentMan->cancelSegment here. (onAbort): Call segmentMan->cancelSegment here. * src/HttpDownloadCommand.cc (prepareForNextSegment): New function. * src/DownloadEngineFactory.cc (newConsoleEngine): Removed splitter. (newTorrentConsoleEngine): Removed splitter. * src/Request.h (segment): Renamed from seg. * src/FtpInitiateConnectionCommand.h (executeInternal): Pass the reference of segment. * src/AbstractCommand.h (executeInternal): Pass the reference of segment. * src/pref.h (PREF_SEGMENT_SIZE): New definition. * src/HttpProxyRequestCommand.h (executeInternal): Pass the reference of segment. * src/HttpResponseCommand.cc (checkResponse): Allowed status 206 when a request range starts 0. (handleDefaultEncoding): Rewritten the code related to Segment. (handleOtherEncoding): Rewritten the code related to Segment. * src/SegmentMan.h (SegmentEntry): New class. (SegmentEntries): New type definition. (bitfield): New variable. (usedSegmentEntries): New variable. (onNullBitfield): New function. (checkoutSegment): New function. (segments): Removed. (splitter): Removed. (unregisterId): Removed. (getSegment): New function(overload) (getDownloadedSize): Removed. (cancelSegment): New function. (completeSegment): New function. (initBitfield): New function. (hasSegment): New function. (getDownloadLength): New function. * src/BitfieldMan.h (getStartIndex): New function. (getEndIndex): New function. (getMissingUnusedIndex): New function(overload). (getSparseMissingUnusedIndex): New function. * src/BitfieldMan.cc (getMissingIndexRandomly): Handle the last byte of bitfield properly. (getMissingUnusedIndex): New function(overload). (Range): New class. (getStartIndex): New function. (getEndIndex): New function. (getSparseMissingUnusedIndex): New function. (isBitSetInternal): Return false if the given index is less than 0. * src/HttpInitiateConnectionCommand.h (executeInternal): Pass the reference of segment. * src/FtpNegotiateCommand.h (executeInternal): Pass the reference of segment. * src/FtpNegotiateCommand.cc (recvSize): Initialize bitfield here. * src/FtpTunnelResponseCommand.h (executeInternal): Pass the reference of segment. * src/HttpConnection.cc (createRequest): Rewritten range header processing. * src/DownloadCommand.h (executeInternal): Pass the reference of segment. (prepareForRetry): Removed. (prepareForNextSegment): Added an argument segment. Made it a virtual function. * src/main.cc (main): Set the initial value of PREF_SEGMENT_SIZE to 1MB. * src/SegmentMan.cc (SegmentMan): Added bitfield. Removed splitter. (~SegmentMan): Added bitfield. Removed splitter. (unregisterId): Removed. (getSegment): Rewritten. (updateSegment): Rewritten. (save): Rewritten. (read): Rewritten. (finished): Rewritten. (getDownloadedSize): Removed. (initBitfield): New function. (FindSegmentEntryByIndex): New function object. (FindSegmentEntryByCuid): New function object. (checkoutSegment): New function. (onNullBitfield): New function. (getSegment): New function(overload). (CancelSegment): New function object. (cancelSegment): New function. (completeSegment): New function. (hasSegment): New function. (getDownloadLength): New function. * src/FtpInitiateConnectionCommand.cc (executeInternal): Load .aria2 file after hostname resolution finishes. * src/Segment.h: Rewritten. * src/Segment.cc (operator<<): New function. * src/HttpDownloadCommand.h (prepareForNextSegment): New function. * src/Request.cc (resetUrl): Made segment null. * src/DownloadEngine.cc (~DownloadEngine): Call cleanQueue before deleting segmentMan. * src/HttpProxyRequestCommand.h (executeInternal): Pass the reference of segment. * src/DownloadCommand.cc (executeInternal): Rewritten the code related to Segment. (prepareForRetry): Removed. (prepareForNextSegment): Rewritten. * src/FtpTunnelResponseCommand.h (executeInternal): Pass the reference of segment. To add HTTP 1.1 persistent connection support(experimental) * src/HttpRequestCommand.cc (executeInternal): Disable keep alive if it is disabled by configuration. * src/Request.h (keepAlive): New variable. (isKeepAlive): New function. (setKeepAlive): New function. * src/pref.h (PREF_HTTP_KEEP_ALIVE): New definition. * src/HttpResponseCommand.cc (executeInternal): Check the remote server supports keep alive. * src/HttpConnection.cc (createRequest): Send "Connection: close" only if keep alive is disabled. * src/main.cc (main): Set the initial value(false) of PREF_KEEP_ALIVE to false. To add max download speed limit: * src/pref.h (PREF_MAX_SPEED_LIMIT): New definition. * src/PeerInteractionCommand.cc (executeInternal): Added max download speed limit. Not tested yet. * src/SegmentMan.h (PeerStats): New type definition. (peerStats): New variable. (registerPeerStat): New function. (FindPeerStat): New function object. (getPeerStat): New function. (calculateDownloadSpeed): New function. * src/SpeedCalc.h: New class. * src/SpeedCalc.cc: New class. * src/main.cc (main): Set the initial value of PREF_MAX_SPEED_LIMIT to 0(which means the download speed is not restricted). * src/PeerStat.h: New class. * src/SegmentMan.cc (registerPeerStat): New function. (calculateDownloadSpeed): New function. * src/DownloadCommand.cc (STARTUP_IDLE_TIME): New definition. (DownloadCommand): Register peerStat to segmentMan. Call peerStat-> downloadStart. (~DownloadCommand): Call peerStat->downloadStop. (executeInternal): Added download speed limitter. Rewritten lowest speed limitter. * src/HttpConnection.cc (receiveResponse): Fixed: eohIndex[headerBuf] -> headerBuf[eohIndex]. * src/AbstractCommand.cc (resolveHostname): Throw DlAbortEx if a name resolution failes. Added hostname to the error message. * src/ConsoleDownloadEngine.cc (calculateStatistics): Initialize psize with dlSize. * src/PieceMessage.cc (receivedAction): Do not call peerInteraction->abortPiece here. (onGotWrongPiece): Call peerInteraction->abortPiece here. * src/BitfieldMan.h (clearAllUseBit): New function. (setAllUseBit): New function. * src/BitfieldMan.cc (clearAllBit): Do not clear useBitfield here. (clearAllUseBit): New function. (setAllUseBit): New function. * src/Piece.cc (clearAllBlock): Call bitfield->clearAllUseBit().
* 2006-08-21 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2006-08-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To fix compilation problem on gcc4.1.1(patch#1542283 by tizianomueller) * src/NameResolver.h: Added the prototype declaration of callback(). To support c-ares library: * src/AbstractCommand.cc: Replaced HAVE_LIBARES with ENABLE_ASYNC_DNS * src/FeatureConfig.cc: Replaced HAVE_LIBARES with ENABLE_ASYNC_DNS * src/FtpInitiateConnectionCommand.h: Replaced HAVE_LIBARES with ENABLE_ASYNC_DNS * src/AbstractCommand.h: Replaced HAVE_LIBARES with ENABLE_ASYNC_DNS * src/HttpInitiateConnectionCommand.h: Replaced HAVE_LIBARES with ENABLE_ASYNC_DNS * src/NameResolver.cc: Replaced HAVE_LIBARES with ENABLE_ASYNC_DNS * src/HttpInitiateConnectionCommand.cc: Replaced HAVE_LIBARES with ENABLE_ASYNC_DNS * src/FtpInitiateConnectionCommand.cc: Replaced HAVE_LIBARES with ENABLE_ASYNC_DNS * src/DownloadEngine.h: Replaced HAVE_LIBARES with ENABLE_ASYNC_DNS * src/DownloadEngine.cc: Replaced HAVE_LIBARES with ENABLE_ASYNC_DNS