summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Attempt to add the ability to listing file entries in a .torrent Tatsuhiro Tsujikawa2006-04-015-2/+33
| | | | | | | | | | | | | | | file. This feature is not yet complete. * src/prefs.h (PREF_TORRENT_SHOW_FILES): New definition * src/TorrentMan.cc (getMultiFileEntries): New function. (getName): New function. * src/TorrentMan.h (getMultiFileEntries): New function. (getName): New function. * src/main.cc (main): Use above 2 funtion.
* (no commit message)Tatsuhiro Tsujikawa2006-03-312-1/+3
|
* * src/Util.cc (isPowerOf): New function.Tatsuhiro Tsujikawa2006-03-3111-57/+56
| | | | | | | | * src/Util.h (isPowerOf): New function. * src/PeerMessageUtil.cc (checkLength): Added a check for length whether or not it is power of 2.
* (no commit message)Tatsuhiro Tsujikawa2006-03-314-21/+21
|
* renamed TorrentMan::deltaUpload to TorrentMan::deltaUploadLengthTatsuhiro Tsujikawa2006-03-314-10/+10
|
* renamed TorrentMan::deltaDownload to TorrentMan::deltaDownloadLengthTatsuhiro Tsujikawa2006-03-314-9/+9
|
* renamed TorrentMan::totalSize to TorrentMan::totalLength and added its Tatsuhiro Tsujikawa2006-03-319-20/+23
| | | | | | accessors.
* rename TorrentMan::preUploadedSize to TorrentMan::preUploadLengthTatsuhiro Tsujikawa2006-03-312-4/+4
|
* rename TorrentMan::preDownloadedSize to TorrentMan::preDownloadLengthTatsuhiro Tsujikawa2006-03-312-4/+4
|
* rename TorrentMan::uploadedSize to TorrentMan::uploadLengthTatsuhiro Tsujikawa2006-03-314-12/+12
|
* rename TorrentMan::downloadedSize to TorrentMan::downloadLengthTatsuhiro Tsujikawa2006-03-315-17/+17
|
* make socket parameter in *Command contructor constTatsuhiro Tsujikawa2006-03-3130-39/+28
|
* * src/PeerInteractionCommand.cc (checkInactiveConnection): New Tatsuhiro Tsujikawa2006-03-3112-9/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | function (detectMessageFlooding): Updated. (checkLongTimePeerChoking): Updated. (getNewPieceAndSendInterest): Added debug log. * src/PeerInteractionCommand.h: New function checkInactiveConnection() * src/TorrentMan.cc (deleteOldErrorPeers): Updated. (getPeer): Updated. * src/TorrentMan.h: Added MAX_PEER_ERROR. * src/PeerAbstractCommand.cc (onAbort): Increment error counter. * src/PeerListenCommand.cc (execute): Close connection if incoming peer is localhost. * src/main.cc (main): Updated PREF_PEER_CONNECTION_TIMEOUT to 60. * src/PendingMessage.cc (processMessage): Not to send piece message if peer is not interested in the pieces localhost has. * src/Peer.cc (shouldChoke): Updated. * src/SendMessageQueue.cc (cancelAllRequest): Fixed.
* Added new class SendMessageQueue that includes PendingMessages Tatsuhiro Tsujikawa2006-03-2819-101/+306
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and RequestSlotMan. * src/SendMessageQueue.h: New class. * src/SendMessageQueue.cc: New class. * src/PendingMessage.h: Added new member variable blockIndex and its accessors. (createRequestMessage): Updated. * src/PendingMessage.cc (createRequestMessage): Updated. * src/PeerInteractionCommand.cc (executeInternal): Updated with SendMessageQueue. (checkLongTimePeerChoking): Updated with SendMessageQueue. (receiveMessage): Updated with SendMessageQueue. (deletePendingPieceMessage): Removed. (getNewPieceAndSendInterest): Updated with SendMessageQueue. (sendInterest): Updated with SendMessageQueue. (createRequestPendingMessage): Updated with SendMessageQueue. (sendMessages): Updated with SendMessageQueue. (onAbort): Updated with SendMessageQueue. (keepAlive): Updated with SendMessageQueue. (beforeSocketCheck): Updated SendMessageQueue. * src/PeerInteractionCommand (sendMessages): Shuffle missingBLockIndexes before using it. Added its own timeout for peer connection. * src/PeerAbstractCommand.h: Added member variable timeout and its setter. * src/prefs.h: Added PREF_PEER_CONNECTION_TIMEOUT. * src/PeerInteractionCommand.cc (PeerInteractionCommand): Added setTimeout() call. (executeInternal): Added setTimeout() call. * src/PeerAbstractCommand.cc (PeerAbstractCommand): Added timeout. (isTimeoutDetected): Updated. * src/main.cc (main): Added PREF_PEER_CONNECTION_TIMEOUT entry to option. Added *simple* message flooding checker. * src/PeerInteractionCommand.cc (executeInternal): Added detectMessageFlooding() call. (detectMessageFlooding): New function. (receiveMessage): Count up CHOKE, UNCHOKE, HAVE message. (beforeSocketCheck): Added detectMessageFlooding() call. * src/PeerInteractionCommand.h: Added sendMessageQueue, chokeUnchokeCount, haveCount, detectMessageFlooding(). Removed deletePendingPieceMessage(), getRequestSlot(), deleteRequestSlot(), deleteAllRequestSlot(). * src/PeerInteractionCommand.cc (beforeSocketCheck): Added checkLongTimePeerChoking() call. * src/RequestSlotMan.h: Renamed deleteTimeoutRequestSlot(). * src/TorrentMan.cc (addPeer): Delete at most MAX_PEER_LIST_SIZE peers if duplicate == false. The parameter "uploaded" and "downloaded" in the tracker request are the size since the client sent the "started" event to the tracker. * src/TorrentMan.cc (setup): Assigned saved downloaded Size and uploaded size to preDownloadedSize, preUploadedSize respectively. * src/TorrentMan.h: Added preDownloadedSize, preUploadedSize, getSessionDownloadedSize(), getSessionUploadedSize(). * src/TrackerInitCommand.cc (execute): Use getSessionDownloadedSize(), getSessionUploadedSize() instead of getDownloadedSize(), getUploadedSize(). * src/PendingMessage.cc (processMessage): Do not send request message if the peer is choking the client. * src/TrackerUpdateCommand.cc (execute): Check wtheher minInterval is less than interval.
* 2006-03-27 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>Tatsuhiro Tsujikawa2006-03-2728-1208/+663
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * configure.in: Added gnutls support. Added several CPP macros. * m4/openssl.m4: Added. * src/SocketCore.{h,cc}: Drop const quarifier from writeData(), readData(), peekData(). Added gnutls support. * src/HttpDownloadCommand.cc: Removed SleepCommand.h * src/TrackerWatcherCommand.{h,cc}: Added. This command creates TrackerInitCommand periodicaly(TorrentMan::minInterval). * src/TorrentMan.cc: Remove downloadedSize == 0 check from save(). Instead, added a check for whether setup method has executed successfully. * src/TorrentMan.h: Added member vaiable setupComplete. Updated DEFAULT_ANNOUNCE_INTERVAL and DEFAULT_ANNOUNCE_MIN_INTERVAL to 300. * src/Makefile.am: Updated. * src/messageDigest.h: Added. This is a macro calculating SHA1 digest using whether OpenSSL or gcrypt, depending on the result of configure script. * src/ShaVisitor.{h,cc}: Removed direct dependency on OpenSSL by using messageDigest.h. * src/TorrentAutoSaveCommand.h: Removed unused variable cuid. * src/PeerListenCommand.cc: Added log about port binded successfully. Fixed memory leak. * src/main.cc: Added gnutls support. Replaced LIB_SSL with ENABLE_BITTORRENT where they are not related to OpenSSL but BitTorrent. Removed instantiation of TrackerInitCommand. Instead, TrackerWatcherCommand is instantiated and pushed to the command queue. * src/InitiateConnectionCommandFactory.cc: Replaced HAVE_LIBSSL with ENABLE_SSL. * src/Request.cc: Replaced HAVE_LIBSSL with ENABLE_SSL. * src/RequestSlotMan.cc: (deleteCompletedRequestSlot) If a piece is already acquired by another command, delete the request slots for the piece. * src/TrackerUpdateCommand.cc: (execute) Changed log level of MSG_TRACKER_WARNING_MESSAGE from info to warn. Added a check whether peer list is null. Fixed the bug that causes sending completed event to the tracker several times. * src/TrackerInitCommand.cc: (execute) Fixed the bug that causes sending completed event to the tracker several times. * src/AbstractDiskWriter.{h,cc}: Removed direct dependency on OpenSSL by using messageDigest.h. 2006-03-26 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com> * PeerConnection.cc: Replaced log message "keep-alive" with "keep alive". * PeerInteractionCommand.{h,cc}: Close connection if peer is choking localhost long time. * TorrentMan.cc: When adding new peer with duplicate = true, if the number of peer list is equal to or grater than MAX_PEER_LIST, delete at most 100 failure entry from the list. If with duplicate = false, MAX_PEER_LIST is not checked. * PeerListenCommand.cc: Fixed the argument order of log message. 2006-03-25 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com> * Logger.h: Moved enum LEVEL from SimpleLogger.h to here. Added warn(). * SimpleLogger.h: Moved enum LEVEL to Logger.h. Implemented warn(). Defined 2 macros(WRITE_LOG, WRITE_LOG_EX) to avoid duplicated code.
* * Request.h: Added AFTER_COMPLETED event.Tatsuhiro Tsujikawa2006-03-2418-134/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * TorrentDownloadEngine.cc: Prints "Download complete" message instead of downloaded size and progress(%) after download completes. * PeerInteractionCommand.cc: After download completes, sends unchoke message to the peer if it is interested in what localhost has downloaded. * TorrentMan.cc: In single-file mode, copy temporary file to the final destination instead of just renaming it. * TorrentMan.cc: Added deleteTempFile(). * PeerAbstractCommand.cc: do not stop execution after download completes. This makes localhost a seeder. * Util.{h,cc}: Added fileCopy(). * PeerListenCommand.cc: do not stop execution after download completes. This makes localhost a seeder. * main.cc: Do not call TorrentMan::fixFilename() in torrentHandler. Added TorrentMan::deleteTempFile() to torrentHandler. Initialized the variable dir as ".". * TorrentMan.h: Changed DEFAULT_ANNOUNCE_INTERVAL to 120 seconds. Deleted renameSingleFile(). Added copySingleFile(), deleteTempFile(). * DownloadEngine.h: Added virtual function afterEachIteration(). * TorrentDownloadEngine.cc: Move a call to TorrentMan::fixFilename() in onEndOfRun() to afterEachIteration(). In onEndOfRun(), changed if condition to check whether filenameFixed is true. * Util.cc: Implemented fileCopy() using rangedFileCopy(). In rangedFileCopy(), added try-catch block to properly close file descriptors. * TorrentDownloadEngine.cc: Added a member variable filenameFixed. Added afterEachIteration(), isFilenameFixed(). * Peer.cc: Changed choking strategy. * PreAllocationDiskWriter.cc: Drop O_DIRECT flag. * TrackerInitCommand.cc: Send completed event only once. * DownloadEngine.cc: Added a call to afterEachIteration(). * TrackerUpdateCommand.cc: Do not stop execution after download completes. * TorrentMan.h: Defined MAX_PEER_UPDATE as 15. aria2 attempts to connect the peers at most MAX_PEER_UPDATE when a peer list is received from a tracker. * TrackerUpdateCommand.cc: Implemented above mentioned behavior. Decreased the number of failure peers to delete to 0(just comment out the line). * Release 0.3.1
* * main.cc: corrected addCommand.Tatsuhiro Tsujikawa2006-03-231-2/+1
|
* * AbstractCommand.cc: casted timeout value to long long int.Tatsuhiro Tsujikawa2006-03-2314-46/+37
| | | | | | | | | | | | | | | | | | | | | | | * ChunkedEncoding.cc: fixed memory leak. * PeerInteractionCommand.cc: casted timeout value to long long int. * SleepCommand.cc: casted timeout value to long long int. * Data.cc: fixed memory leak. * Data.cc: fixed toLLInt(). * BitfieldMan.cc: fixed memory leak. * TorrentMan.cc: initialized storeDir to ".". * TorrentMan.cc: fixed memory leak. * TorrentMan.cc: corrected file paths of splitted files. * PeerAbstractCommand.cc: casted timeout to long long int. * main.cc: added delete(req) and delete(te->diskWriter). * RequestSlot.cc: casted timeout value to long long int. * Request.cc: fixed memory leak. * PendingMessage.cc: make HAVE messages sent only when peer does not have the piece. * Peer.{h,cc}: added hasPiece(int index).
* * replaced std::vector with std::deque.Tatsuhiro Tsujikawa2006-03-2231-84/+95
|
* * PeerInteractionCommand.cc: added a call to Tatsuhiro Tsujikawa2006-03-227-46/+94
| | | | | | | | | | | | | | | | | TorrentMan::unadvertisePiece in Destructor. * PeerInteractionCommand.cc: make have message sent immediately if the size of pending message queue is zero. * TorrentMan.cc: set the maximum size of peer list to 250. * TorrentMan.h: changed the container type of Peers and UsedPieces to deque. * Util.cc: fixed rangedFileCopy. * AbstractDiskWriter.{h,cc}: moved digest context initialization to Constructor. Also, moved digest cleanup to Destructor. * MetaFileUtil.cc: fixed memory leak
* (no commit message)Tatsuhiro Tsujikawa2006-03-211-1/+1
|
* (no commit message)Tatsuhiro Tsujikawa2006-03-211-1/+2
|
* (no commit message)Tatsuhiro Tsujikawa2006-03-212-2/+4
|
* (no commit message)Tatsuhiro Tsujikawa2006-03-211-2/+2
|
* (no commit message)Tatsuhiro Tsujikawa2006-03-215-1/+36
|
* (no commit message)Tatsuhiro Tsujikawa2006-03-215-75/+10
|
* added bittorrent support(experimental)Tatsuhiro Tsujikawa2006-03-2187-174/+6575
|
* * ChunkedEncoding.{h,cc}: fixed the bug that if chunk data is binary,Tatsuhiro Tsujikawa2006-03-092-30/+38
| | | | | decoding did not work properly.
* (no commit message)Tatsuhiro Tsujikawa2006-03-072-1/+1
|
* Added intl/*Tatsuhiro Tsujikawa2006-03-073-14/+538
| | | | | Added src/alloca.c
* (no commit message)Tatsuhiro Tsujikawa2006-03-059-70/+94
|
* * DownloadEngine.{h, cc}:Tatsuhiro Tsujikawa2006-03-027-102/+203
| | | | | | | | | | | | | | | * ConsoleDownloadEngine.{h, cc}: Console output message(size, speed) is now generated by ConsoleDownloadEngine not by DownloadEngine. * main.cc: Download complete/abort message is now generated by main. * Makefile.am (SUBDIRS): Add m4. (ACLOCAL_AMFLAGS): New variable. (EXTRA_DIST): New variable. * configure.in (AC_CONFIG_FILES): Add po/Makefile.in, * gettext: added gettext functionality
* * DownloadEngine.{h, cc}:Tatsuhiro Tsujikawa2006-03-025-39/+60
| | | | | | | | | | * ConsoleDownloadEngine.{h, cc}: Console output message(size, speed) is now generated by ConsoleDownloadEngine not by DownloadEngine. * main.cc: Download complete/abort message is now generated by main.
* * HttpConnection.cc:Tatsuhiro Tsujikawa2006-03-014-7/+29
| | | | | | * common.h: defined the user agent name as macro
* (no commit message)Tatsuhiro Tsujikawa2006-03-011-2/+1
|
* * ChunkedEncoding.cc: Added #include directive for strings.hTatsuhiro Tsujikawa2006-03-012-1/+3
|
* * Logger.h:Tatsuhiro Tsujikawa2006-03-015-25/+25
| | | | | | * SimpleLogger.{h,cc}: Changed the type of msg to const char*.
* * HttpConnection.cc: Added "Proxy-Connection" header to proxy Tatsuhiro Tsujikawa2006-03-013-38/+126
| | | | | | | | | | request. Added "User-Agent" header to CONNECT proxy request. Fixed "Proxy-Authorization" header. Now proxy authorization works properly.
* * AbstractCommand.cc:Tatsuhiro Tsujikawa2006-03-015-13/+13
| | | | | | | | | | * DownloadCommand.{h, cc}: Aborted downloading commands now properly unregister its cuid from SegmentMan. * DownloadEngine.cc: .aria2 file was written when a downloading failed with errors.
* * common.h: defined LONG_LONG_MAX and LONG_LONG_MIN if a Tatsuhiro Tsujikawa2006-02-281-0/+5
| | | | | | | compiler does not define these macros.
* * Util.{h,cc}: added startsWith().Tatsuhiro Tsujikawa2006-02-2824-15/+50
| | | | | | | | | | | | | | | | | | * CookieBox.cc: rewrited criteriaFind() using Util::startsWith() and Util::endsWith(). * SocketCore.cc: struct addrinfo is now zero-initialized. * common.h: added #include directive of limit.h. * DownloadEngine.cc: added #include directive of sys/time.h and algorithm. * Exception.h: added #include directive of stdio.h. * AbstractCommand.h: added #include directive of sys/time.h. * DownloadCommand.h: added #include directive of sys/time.h. * *.h: added #include directive of common.h to all base classes. subclasses' one was removed.
* (no commit message)Tatsuhiro Tsujikawa2006-02-226-7/+56
|
* newTatsuhiro Tsujikawa2006-02-226-0/+244
|
* (no commit message)Tatsuhiro Tsujikawa2006-02-2210-37/+98
|
* (no commit message)Tatsuhiro Tsujikawa2006-02-225-24/+12
|
* (no commit message)Tatsuhiro Tsujikawa2006-02-2211-48/+107
|
* (no commit message)Tatsuhiro Tsujikawa2006-02-216-15/+40
|
* (no commit message)Tatsuhiro Tsujikawa2006-02-2112-86/+236
|
* (no commit message)Tatsuhiro Tsujikawa2006-02-2114-0/+1161
|
* (no commit message)Tatsuhiro Tsujikawa2006-02-2132-259/+561
|