mod_bt - Making things better for seeders
Documentation
Version History
mod_bt 0.0.19
August 10th, 2006
- Fixed an occasional segmentation fault that would happen when certain BitTorrent clients sent an /announce request.
- Fixed a bug that was causing specific /scrape requests to return nothing.
-
Several fixes to get mod_bt to compile on 64-bit platforms and
big-endian systems. mod_bt is now known to build successfully under
Debian GNU/Linux on the following platforms:
- ARM
- m68k
- DEC Alpha
- AMD64
- HPPA
- i386
- Intel 64
- MIPS
- MIPSEL
- PowerPC
- S/390
- Sun Sparc
-
The Debian build of mod_bt now
adds an
Alias
directive to httpd.conf to point to the tracker's CSS file. - The build process for htdocs/ now dynamically generates the version number and "last updated" date. This means that when you compile your own mod_bt, your documentation directory will say that mod_bt was "Last Updated" on the day that you built it. CHANGES.html (this file) will still contain the official release date of each version. :-)
-
Replaced the SHA1 implementation in
libbtutil
with a public-domain version to keep licensing issues simple. - Added libtap to the tests/ directory. Using the Test Anything Protocol to build unit tests will not only make writing unit tests quicker, easier, and more fun... but it will also make it so that we can create fancy graphs of our results using QA tools like Smolder. If you want to see how easy writing unit tests under libtap is, check out the "single_torrent_test" function in btp_torrent.c .
mod_bt 0.0.18
June 27th, 2006
-
All code is licensed under the Apache License 2.x
(Bug #24).
Previously:
- Perl components were "under the same terms as perl itself"
- PHP component was licensed under the PHP license
mod_bt 0.0.17
June 17th, 2006
-
Fixes and updates to debian packageing;
- mod_bt debian packages now build for both php4 and php5.
-
The
debian/rules
file dynamically figures out it's own version number, instead of having to be updated every single time a new version comes out. -
The
debian/rules
file also figures out what version oflibdb
we've compiled against, and thedebian/control
file uses this information to recommend the appropriatedbx.xx-util
package to use for database recovery.
- Fixed website template; everything that isn't part of the source tarball now links to http://www.crackerjack.net/mod_bt/, and download.php is automatically generated with the latest mod_bt version number.
- Cleaned up database connection and transaction handling; there aren't any more "dirty reads" to the database, which should improve transaction stability.
-
When a master mod_bt process starts up now, it clears the 'peers'
database. This means that if you do an 'apache2ctl restart', all of your
peers will disappear until they reannounce. This is both a good thing
and a bad thing;
- It's a good thing because it means that mod_bt doesn't have to spend time thinking about peers that have gone away after it's been down for awhile.
- It's a good thing because it makes it easier to clear your peerlist when, for instance, you've changed your apache security settings.
- It's a bad thing because these peers won't be known until they reannounce themselves, but under most configurations, this happens in under 10 minutes.
- Changed iterators to announce, scrape, etc. data. They now allocate more memory at a time, and allocate the memory outside of APR pools. The connection functions that call them are expected to allocate and free the buffer themselves instead of relying on APR. Since these could thread over hundreds (or thousands) of peers and we don't always know the string length in advance, it's a huge waste of memory to have all those reallocations happen in pools.
-
Fixed a possible segfault in the
/announce
handler. (Bug #22) - Fixed a problem with the perl modules not compiling correctly on some platforms.
- mod_bt will now build against Berkeley DB 4.4 if it is available.
mod_bt 0.0.16
May 25th, 2006
-
A new tool,
bt_showmetainfo
has been written. This tool should produce output that looks the same as the python-based officialbtshowmetainfo
script. -
A new tool,
btt_infohash
has been written. This tool allows you do add/delete/edit/view infohash records in the mod_bt tracker database, and should be especially useful for registering torrents on a tracker that requires registration. -
bt_db2xml
andbt_xml2db
have been renamed tobtt_db2xml
andbtt_xml2db
. - Changed database connection and transaction code a bit.
-
bencode/metainfo parsing has been added to
libbtutil
, most of the logic borrowed from the Transmission project. - Major changes to the code layout:
libbtt
is now known aslibbttracker
.-
Net::BitTorrent::LibBTT
is now known asNet::BitTorrent::LibBT::Tracker
-
Functionality that would be useful to more than just trackers has
been forked into a new library,
libbtutil
. -
Namespaces:
-
Every exported symbol name in
libbttracker
now begins with "btt_". -
Every exported symbol name in
libbtutil
begins with "bt_". -
When
libbtpeer
is realized, every symbol name in that library will begin with "btp_".
-
Every exported symbol name in
-
Most header files have been moved up one level, because that just
makes more sense; eg
<libbtt/cxn/cxn.h>
is now<libbttracker/cxn.h>
,<libbtt/libbtt.h>
is now just<libbttracker.h>
, etc. -
As a convienence,
<libbttracker.h>
and<libbtutil.h>
now#include
every other header file from their libraries, so you only need to include the top-level header to make use of the entire library.
mod_bt 0.0.15
May 10th, 2006
- New mod_bt website designed by Donna M. Jaggard, at the request of the Apache Software Foundation.
- Reworked shared memory management; now, if apache / the system crashes, mod_bt should be able to restart even if the shared memory segment/file still exists. (Bug #13)
- Restored compatibility with libdb-4.2. (Bug #15)
- New "Tracker" httpd.conf option; must be set to "On" for the tracker to operate. This both makes it easier to bundle mod_bt in a server without having to start it up, and solves an issue with mod_bt-enabled httpd's breaking test results from Apache::Test.
- mod_bt is now available as a Debian package.
-
bt_xml2db
script to recover your tracker's database frombt_db2xml
's output. - The mod_bt source repository is now open to the public: http://p4.yi.org/depot/main/apps/mod_bt/dev/
-
Numerous build system fixes, including, but not limited to:
- Fixed "make install" for the PHP module
- Made it easier to compile without mod_perl, apache, etc.
- Infohash XML generation now uses LibXML2.
- Small tweaks to make mod_bt behave nicely under both apr-0 (apache 2.0.x) and apr-1 (apache 2.1.x)
- Documentation updates
- Cuddled some elses.
mod_bt 0.0.14
April 20th, 2006
This has primarily been a "refactor the build system" release;
- Moved Apache::ModBT to Apache2::ModBT to fit in with the mod_perl2 API
-
Reworked source tree to use automake and libtool, as a result:
- "make install" now installs documentation in $(prefix)/share/doc/mod_bt
- libbtt is now dynamically linked in instead of static
- Fixed up perl modules' Makefile.PL's; with an installed libbtt.so it should now be possible to install perl modules directly from CPAN
- Another small change to libdb-4.2 detection
-
Applied three pathes from Kenneth Porter for Fedora Core compatibility:
- Suppress incompatible apache regex symbols
- Include apr's include path in APXS's CFLAGS (odd this is neccessary, since even apxs needs apr to function...)
- Use $(MAKE) in all makefiles instead of make
- mod_bt now has a bugzilla database.
mod_bt 0.0.13
January 9th, 2005
- Fixed some build problems (db-4.2, bad cflags, etc)
- Added --with-modperl-src configure directive
- Fixed a bug with "register", "details" handlers and PHP module that was only permitting 32-bit filesizes (up to 4GB).
mod_bt 0.0.12
July 15th, 2004
- Moved HTML documentation generation from "make" to "make dist"
- Fixed a bug that caused a peer's "last serve" time to be re-set on each /announce request
- Fixed a bug that limited the "filesize" that could be registered on hashes to 2GB.
- Removed threaded operation support; it's going to require a major code overhaul...
- mod_bt website design by Donna M. Jaggard.
mod_bt 0.0.11
July 4th, 2004
- Reduced the maximum number of transactions, locks, and lockers in the Berekeley DB to reduce the database's base size. (I don't imagine a million locks ever being held at once anyway...)
- Added mutexes and database configs to support threaded operation.
- Improved autoconf tests for PHP/Perl support.
- mod_bt website logo by Donna M. Jaggard.
mod_bt 0.0.10
June 24th, 2004
- Improved documentation
- Details handler & config value;
modbt-details
&TrackerDetailURL
. - Support for SSI on root html info page;
TrackerRootInclude
- Added connection actions to Net::BitTorrent::LibBTT perl module.
- Added bttrack.pl example perl tracker script.
mod_bt 0.0.9
June 22nd, 2004
- "written in haste" bugfix release: announce requests work again. (this broke when I added "same peer on multiple hashes" in 0.0.8 and I didn't test it enough.. *sigh*)
- "make install" now installs libraries and tools to --prefix (you may need to run "ldconfig" the first time)
- Fixed versioning number conventions in the perl modules
- Added a little bit of documentation
mod_bt 0.0.8
June 20th, 2004
- "make install" now properly installs the php_mod_bt module.
- The same peer-id is now usable on multiple infohashes.
- Put a "Crash Recovery" section into the documentation.
- Started preparing the source tree for using
libbt-1.01
to achieve passive peering (planned for 0.1.0). - Filled out documentation for every method in Net::BitTorrent::LibBTT
- Created a mailing list for mod_bt announcements/discussion; subscribe at http://adserton.crackerjack.net/cgi-bin/mailman/listinfo/mod_bt.
mod_bt 0.0.7
June 13th, 2004
- Fixed a bug that caused floating point exceptions when the only peer on a torrent sent a "stopped" request with "num_want=0".
- Fixed a bug with byte-ordering in "compact" responses. (I wish someone would have pointed that out to me when I posted about this!)
- Changed the minimum required perl version from 5.8.4 to 5.6.0.
mod_bt 0.0.6
June 1st, 2004
- Fixed two bugs with the PHP build process that made it impossible to change which "php-config" program to use.
- Changed distribution so that it doesnt include .tgz's of every old version anymore.. that was a bit of a waste :)
- Debugging symbols are now stripped from libbtt.a/libbtt.so unless "--with-debug" is specified.
- Fixed a bug that appeared in 0.0.4 that caused some types of clients to never get served any peers.
- Fixed a horrid bug, that I don't know when it appeared, that set some peoples' IP's to "0.0.0.0".
mod_bt 0.0.5
May 30th, 2004
- Fixed a bug where scrapes with the "verbose=1" flag set would not return the correct number of seeds.
- mod_bt configuration is now handled by GNU autoconf.
- Added PHP language bindings; php_mod_bt (requires both mod_bt extension and apache2handler PHP SAPI)
- Fixed a bug with the scrape url's bencoding
mod_bt 0.0.4
May 25th, 2004
- Fixed bencoding bug in scrape URL
- Fixed the "apachectl restart" bug
- Fixed a bug that was causing peers' flags to be cleared after every request.
- Perl (and mod_perl) scripts can now communicate directly with the tracker; Net::BitTorrent::LibBTT & Apache::ModBT
- Added "Shunned" peer flag; "Shunned" peers never get any peers returned to them and are never served to others.
- Made "Shunned" and "Shield" flags preserved on a peer across requests. (peer->flags = in_peer->flags | (peer->flags & BT_PEER_KEEP_FLAGS))
- Made a top-level Makefile and "config.mk" file in order to prepare for using autoconf.
mod_bt 0.0.3
May 20th, 2004
initial public release
mod_bt 0.0.2
March, 2004
first version to use a disk-based database
mod_bt 0.0.1
February, 2004
initial prototype version, ran 100% in shared memory with static limits on the number of peers and hashes.