Enhanced CTorrent
[
Overview |
News |
Changes |
CTCS |
Download |
Resources |
Contact ]
Overview
CTorrent is a
BitTorrent client implemented in C++ to be lightweight and quick.
The original has fallen a little behind in updates and bug fixes though.
The files here contain the good work of those who wrote the original
CTorrent base code and a number of patches that provide fixes and
enhancements, as well as additional fixes and enhancements that I am
contributing.
I am not the original author, current maintainer, or any other official
representative of CTorrent. The files on this page are not the
original or official CTorrent distribution. I encourage you to visit
the CTorrent project
page on SourceForge for further information.
Enhanced CTorrent now has a
SourceForge project
page with forums, bug reporting, and downloads.
Platform
Enhanced CTorrent is intended to run on any Unix-like system, including
FreeBSD, Linux, Mac OS X, Solaris, Cygwin, etc. If it doesn't build or run
properly without modification on your system, please
post to the forums
or send details.
Features
The purpose of the Enhanced CTorrent effort is to fix problems that
remain in the code, modernize existing features and algorithms, and
implement new features while maintaining low overhead requirements and
a high standard of performance (both part of the original CTorrent
design philosophy). Highlights of the enhanced client include:
- Support for large files (>2GB) and large torrents (>255 files)
- Strategic selection of pieces to request for download
- Continuous queueing of download requests, tuned based on latency
and throughput for each peer
- Improved download performance, including parallel requests in initial
and endgame modes
- Improved bandwidth regulation
- Improved compatibility with other peers
- Performance optimization and bug fixes
- An interface for monitoring and managing multiple clients
- Dynamic cache allocation and management, including prefetch
- Flexible console I/O redirection
- Interactive control commands and menus
Documentation
For documentation that provides a little more than the help screen,
please see the User's Guide.
For a list of changes in the current and previous versions, see the
ChangeLog file.
Peer ID
Beginning with dnh1.1 the default peer ID has been changed for convenience,
as some other clients and trackers assume that Ctorrent is "buggy" and
won't cooperate with it. [Guess what, there are plenty of others with bugs
too.] The -P option is still available if you wish to use a different peer
ID, but it is no longer necessary to do so in order to avoid this "ban".
The new default peer ID prefix is "-CDversion-", where
version is an indication of the version number (0101 for dnh1.1).
CTCS
CTorrent Control Server (CTCS) is an interface
for monitoring and managing Enhanced CTorrent clients. It can manage
allocation of bandwidth, provide status information, and allow changes
to the running configuration of each client. Support for this
interface was added in the dnh2 release.
- 2008-06-14
- Version dnh3.3.2 is released. This is a bug-fix
release to correct known issues in dnh3.3.1.
- 2008-04-26
- Version dnh3.3.1 is released. This is a bug-fix
release to correct known issues in dnh3.3.
CTCS 1.4.1 has also been released.
- 2008-04-08
- Version dnh3.3 is released. This release includes
a number of bug fixes and optimizations; details are in the
change log.
- 2007-11-27
- There is a bug in dnh3.2 that can cause a completed torrent to be
reported as incomplete when restarting. An easy correction is to delete the
"setvbuf" line in btfiles.cpp and recompile. This is recommended even if you
have not observed the problem.
While I'm here I may as well announce the new
SourceForge
project page! This should be a big help toward organizing communications,
tracking bugs, and maintaining code history.
- 2007-07-23
- Version dnh3.2 is released. This release includes
a number of bug fixes and some optimizations; details are in the
change log.
- 2007-06-13
- The timestamp on one of the autoconf files was incorrect, which may have
caused build problems for some people. The dnh3.1 release package has been
updated to correct this.
- 2007-06-10
- A possible crash when exiting the program has been corrected. The
bug is essentially harmless except that you might have a core file
created as a result. The dnh3.1 release package has been updated
below to correct this.
- 2007-06-05
- Version dnh3.1 is released. There are several
new features and bug fixes; details can be found in the
change log. If you're using
CTCS, you should also upgrade it to version 1.4 in order to use new
client configuration options.
- 2007-05-23
- The dnh3-update patch has been updated to fix a potential crash, and a
rate measurement issue on some devices.
- 2007-04-27
- A couple more critical issues in release dnh3 have been found and fixed.
To reduce any confusion or inconvenience in the tracking and application
of patches, all such fixes will now be distributed in a single patch file that
will be updated as necessary, while its name will not change.
See the Download section for more details.
- 2007-04-18
- Two patches are available for dnh3; one corrects a
general problem and the other provides support for Mac OSX.
- 2007-04-11
- Version dnh3 is released. There are several
significant new features; release notes can be found in the
change log. If you're using
CTCS, you should also upgrade it to version 1.3 so that bandwidth
management will work correctly.
- 2007-02-25
- A patch is available to fix a bug that can
cause a crash when reassigning a piece for download.
- 2006-11-05
- Version dnh2.2 is released, mostly for bug fixes.
Thanks to those who have reported them and helped with debugging!
A simple user's guide is also available.
- 2006-09-03
- Version dnh2.1 is released,
along with CTCS 1.1. Both updates fix
issues when using CTCS on Linux, among other things.
- 2006-04-26
- The CTCS protocol is finally
documented.
- 2006-04-25
- A patch is available to fix a bug in my
solution for the vfat filesystem issue. This bug can cause the client
to crash when creating a file on any filesystem type; the patch is
recommended for all users.
- 2006-01-15
- Version dnh2 is released! This version includes a number of
significant changes, including large file
support, piece selection, tuned request queue depth, and support for
CTorrent Control Server.
The preferred download mechanism is now the
SourceForge File Release page. All new files will be available there for
convenient downloading from a mirror site near to you.
Newer files appear first in the list. Note that patches are generally
intended for the version below (older than) the patch.
Release dnh3.3.2
SourceForge download page
Alternate (source distribution)
Release dnh3.3.1
SourceForge download page
Alternate (source distribution)
Release dnh3.3
SourceForge download page
Alternate (source distribution)
A complete source distribution for all platforms.
Release dnh3.2
Source distribution
A complete source distribution for all platforms.
Release dnh3.1
Source distribution
A complete source distribution for all platforms.
Release dnh3 Update Patch
dnh3_update patch (23 May 2007)
This patch provides critical updates to release dnh3. The patch file will be
updated here as necessary if additional such issues are found.
This patch file contains the following component patches (not all were
previously posted individually):
- msg
- Fixes a potential crash recording or reporting the type of message
received from a peer. This could happen on multiple message types but may be
likeliest to happen upon download completion (becoming seed).
- bwrate
- A problem has been observed with bandwidth rate measurement on NSLU2
devices. This appears to be due to a compiler or platform bug of some sort,
but the root cause is not yet known. As such, it's possible that it may affect
builds for other ARM devices or builds that use the same versions of build
tools. While the problem is cosmetic with respect to bandwidth limiting, it
can affect client operation in other ways. This patch provides a permanent
workaround for this particular issue, but note that similar types of
calculations are used in other parts of the program that cannot be fixed in
this manner.
- flush
- Fixes a problem flushing downloaded data to disk in certain situations.
If you have downloaded any torrents with dnh3-release, please check them with
the "-c" option to confirm that all of the data was saved!
- console
- This fixes my interpretation of the description of the stdarg facility,
which is at best unclear in most documentation that I have checked. The
problem could cause crashes or incorrect behavior in the new console code.
- clock_gettime
- This patch emulates the clock_gettime function (well enough for
this program's needs) using gettimeofday if clock_gettime is not
present in the system libraries. This is needed in order to compile
on Mac OSX and can also be used on other systems that do not have
this function. (You'll know because configure exits with an error.)
- maxfd
- This corrects initialization of the maxfd variable in the main loop;
the bug can result in abnormally high CPU utilization.
To apply the patch, download the file into the ctorrent source directory
and run the command:
patch < patch-dnh3_update.diff
in that directory. Then re-run configure and make.
Release dnh3
Source distribution
A complete source distribution for all platforms.
Patch for reassign bug
reassign patch
This fixes a potential crash when reassigning a piece for download to a
faster peer. It likely only shows itself on memory-constrained
systems or particular OSs. With verbose output on, you would see
something like this:
Reassigning 0x81183b8 to 0x8160ef8 (#585)
Segmentation fault
To apply the patch, download the file into the ctorrent source directory
and run the command:
patch < patch-reassign.diff
in that directory. Then recompile the program.
Release dnh2.2
dnh2.1 to dnh2.2 patch file
A patch file of changes to release dnh2.1 to bring it up to dnh2.2.
Source distribution
A complete source distribution for all platforms.
Release dnh2.1
dnh2 to dnh2.1 patch file
A patch file of changes to release dnh2 to bring it up to dnh2.1.
Source distribution
A complete source distribution for all platforms.
Patch for vfat bug
btfiles patch
This fixes a coding bug in my solution for the vfat
filesystem issue. This bug can cause the client to crash when
creating a file on any filesystem type; the patch is recommended for
all users of release dnh2.
To apply the patch, download the file into the ctorrent source directory
and run the command:
patch < patch-btfiles.cpp.diff
in that directory. Then recompile the program.
Release dnh2
The patch files for this version are significantly larger than in
previous releases. It will be faster and easier to just download the
patched source distribution below.
dnh1.2 to dnh2 patch file
A patch file of changes to release dnh1.2 to bring it up to dnh2.
Patch file
A patch file of changes to the CTorrent 1.3.4 base.
Patched source
A complete source distribution for all platforms.
Older Versions
Please see the Old Versions page for
previous releases and patches.
CTorrent Home Page
Outdated, but you may find some useful info (particularly the FAQ).
CTorrent SourceForge Project
Hosts the original CTorrent codebase, bug reports, patches, and forum.
Custom CTorrent
A page by the author of the "get1file" patch and other fixes. It contains
a custom version and a GUI for CTorrent.
BitTorrent
The official BitTorrent home page.
BitTorrent wiki
Various documentation.
BitTorrent protocol specification
(official version)
BitTorrent protocol specification
(wiki version)