Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Sep 12, 2009
  1. This is v0.051

    authored
  2. git clean to ignore fake rcs

    authored
  3. Developer stuff

    authored
  4. Fixing DHT bug reported by Wouter Godefroy <...@belgoline.com>

    authored
        - DHT nodes found in metadata were not being added according to spec
        - Updating Changes to note the above fix
  5. Moving developer stuff out of Build.PL

    authored
        - Do not add /inc/ (location of Developer install class) to MANIFEST
Commits on Apr 27, 2009
  1. Moved various dispatch tables up to nearest package level. Will this …

    authored
    …speed things up? Probably not...
Commits on Apr 20, 2009
Commits on Apr 18, 2009
  1. NB v0.050_002: Metadata and POD updates for issue tracker

    authored
        - Issue tracking had moved to github
        - Adding a .gitignore file for sanity
Commits on Feb 17, 2009
  1. Minor Metadata changes

    authored
        * /scripts/net-bittorrent.pl should not be indexed
        * More related tags in meta.yml's keywords block
  2. And the cycle begins anew

    authored
        * New script /scripts/net-bittorrent.pl is installed with distribution. It
            is a very short version of /tatoeba/005-console.pl
        * Version bump to 0.050_001
        * New dev build action 'testkwalitee' and an expanded 'testpod'
        * Dev build action 'changes' no longer burps on new, uncommited files
Commits on Feb 13, 2009
  1. Minor pre-tag changes

    authored
            * update all version numbers to 0.050
            * now requires perl 5.8.8 or better because I'm tired of wasting time
                making sure N::B works with ancient versions
Commits on Feb 12, 2009
  1. Code freeze. Like... for real this time.

    authored
        * New public accessors for Net::BitTorrent::Peer: am_choking,
          am_interested, bitfield, host, incoming, peer_choking, peer_interested,
          port, reserved_bytes, source, torrent. See the docs.
  2. More prep for v0.050 stable

    authored
        * Update copyright notices for current year in all recently modified files
        * Retry outgoing connection with plain text when MSE handshake fails
        * Fix: Math::BigInt try => [...] requires v1.78+ (see failures in
            cpants://3252890 and cpants://3253722)
        * Net::BitTorrent->_schedule() now accepts fractional seconds. Just in
            case the user has used Time::HiRes...
        * Fixed skip() calls in all tests
        * New auto_feature for Math::Pari and Math::BigInt::Pari
        * M::Pari and M::BigInt::Pari are now in the list of recommended modules
Commits on Feb 11, 2009
  1. Random changes running up to v0.050 stable

    authored
        * Message Stream Encryption is enabled by default (plaintext out, RC4 in)
        * Update (some) Copyright notices where appropriate
        * Documentation updates in N::B::Notes
        * Made unknown packet reporting a lot less stupid (creates a block users
            can c+p right into the issue tracker)
        * New demo: /tatoeba/005-console.pl
        * Remove call for assistance from N::B.pm's POD (message remains in
            N::B::Notes)
Commits on Feb 9, 2009
  1. Prepping a devel CPAN dist

    authored
Commits on Feb 8, 2009
  1. Belay that

    authored
        * Previous commit was made by... someone with an extra chromosome... Yeah.
        * Undo some of the silly stuff I left in (I don't want to merge commits)
  2. More encryption stuff and step one of the N::B::Peer Internal Structu…

    authored
    …re Shuffle
    
        * Recommended perl version is 5.10.0. Now that it's been out more than a
            year, I see no reason to continue going out of my way to support
            ancient perl versions. Even most modern Linux distributions come with
            5.10.0 now. ...and I dev on bleadperl.
        * N::B::Peer->_rw() progress has changed from...
            - write
            - read
                + process_packets (if read)
            ...to...
            - read
            - write
            - process_packets (on a timer)
        * t/[...]/007_miniswarm_http.t now uses encryption. ...for now.
        * Full RC4 encrypted sessions (kinda) work. It's (very) unstable.
Commits on Feb 5, 2009
  1. Encrypted Protocol headers are complete and various unrelated tweaks

    authored
        * Internal status is kept during handshake
        * Shorter waiting period before filling requests (15s -> 3s)
        * Build.PL requires Math::BigInt on all systems
        * Default for number of allowed connections per host has changed (2 -> 1)
Commits on Feb 4, 2009
  1. Major bugfix and protocol encryption

    authored
        * Protocol encryption is now supported in both plaintext and RC4 modes
        * Fix for HAVE reporting bug
  2. Last pre-encryption commit

    authored
        * Define bitfield (scalar ref) in N::B::Peer->new() to silence the "Can't
            use an undefined value" warning if N::B::Peer->_bitfield() is called
            before we recieve a handshake (in peer_connect callback, for example)
        * N::B::Peer objects have their sockets closed and removed before calling
            peer_disconnect callback
        * Early protocol encryption stuff in lib/Net/BitTorrent/Peer.pm
        * New private Net::BitTorrent::Torrent->_add_node('XXX.XXX.XXX.XXX:XXX') method
Commits on Jan 28, 2009
  1. Previous commit continued and one test bug 'fixed'

    authored
        * Removed test #40 ("...rmdir temp dir to test _mkpath") from
            t/700_classes/Net/BitTorrent/Torrent/File.t. It was testing a
            File::Temp trick which certainly fails on non-Win32 platforms
        * I forgot /tatoeba/000-basic.pl in the previous commit
Commits on Jan 27, 2009
  1. Minor documentation fixes

    authored
        * Proofreading N::B::Notes
        * Brief message in example scripts about viewing the source
  2. More protocol test fixes and cleanup

    authored
        * Improved test names in t/[...]/Protocol.t
        * More edge case tests in t/[...]/Protocol.t
  3. 32-bit math fixes in the test suite

    authored
        * More pod cleanup
            - Fix bad internal link in N::B::Version
        * fix t/[...]/Protocol.t failures due to the limits of 32-bit math
        * tatoeba/*.pl shorten =head1 NAME content so it doesn't wrap on search.cpan.org
  4. Move into github and code clean up

    authored
      * Several updates in the language used in N::B::Version's pod
      * N::B::Notes has been trimmed down a bit
      * N::B's pod has been trimmed
      * ALL tests are run even on non-dev systems
        - I'm doing this to shake out the last few (I hope) crash/protocol bugs
          before really putting effort into more advanced stuff
Commits on Jan 5, 2009
  1. Resume system v2, half-open timeouts, peers remember source

    authored
     * [fix] N::B::Peer->as_string(1) now gives correct choke/interest statuses
     * [etc] Improved description for N::B::Peer disconnect when sent
             unrequested piece.
     * [new] Several new private methods:
               - N::B->_set_half_open()
               - N::B->_set_peers_per_torrent()
               - N::B->_set_connections_per_host()
     * [fix] N::B->_set_max_ul_rate() requires a value greater than 0 (zero)
     * [etc] Various tests tie STDERR to make sure as_string() is handled
             properly
     * [api] Major: Lists of potential peers and complete/incomplete counts (if
             applicaable) are kept by their source (Net::BitTorrent::DHT,
             Net::BitTorrent::Torrent::Tracker::HTTP,
             Net::BitTorrent::Torrent::Tracker::UDP) rather than in the related
             Net::BitTorrent::Torrent object. Net::BitTorrent::Torrent keeps
             only a few nodes in an internal cache to speed things along.
             Eventually, Net::BitTorrent::Peer objects will contain info about
             how we found them. This was a Short Term Goal.
     * [etc] /tatoeba/002-debug.pl only works until the torrent is completed
     * [etc] shorter timeouts for miniswarm tests
     * [api] Major: Resume system (yeah, the thing I added a little over a week
             ago) is deprecated and has been replaced.  I thought about it and
             changing the original .torrent's metadata is a bad idea so I
             switched from Rakshasa- to Rasterbar-like.  The internal structure
             is still subject to change and the docs probably don't match.
Commits on Jan 2, 2009
  1. New demos, schedule fixes, half open peer timeouts, quicker HTTP trac…

    authored
    …ker retries
    
     * [fix] /tatoeba/002-debug.pl was using builtin sleep which (of course) does not support fractional periods
     * [fix] Various N::B::Torrent status and internal schedule fixes.
     * [fix] N::B::Torrent->hashcheck() no longer stops the torrent first
     * [fix] Expanded limits on what a N::B::Torrent object can do while being hashchecked or stopped or standalone.
     * [etc] When we're a seed, we don't attempt new connections as often.
     * [etc] N::B::T::Tracker::HTTP retry is now 30s on socket error (formerly 5m)
     * [new] N::B::Peer objects are disconnected if they don't complete handshake within 30s.   We used to wait for the OS to tell us the socket was disconnected (perhaps 1-2m).
     * [etc] Private N::B::Torrent->_status_as_string() for 'nice' status strings
     * [api] Net::BitTorrent::Torrent->peers() is now public
     * [new] /tatoeba/003-threads.pl - Trivial, Multi-threaded Example
     * [new] /tatoeba/004-resume.pl - Demonstration of Net::BitTorrent::Torrent's Resume System
     * [fix] Build.PL exit(0) when perl < v5.8.1 or M::B < v0.3
Commits on Dec 31, 2008
  1. New debugging example and testing usefulness of half_open limit

    authored
     - [etc] new debugging script: /tatoeba/002-debug.pl
     - [etc] Don't constrain outgoing connection attempts with half_open limit (temporary change for testing)
     - [etc] Net::BitTorrent::Peer->as_string(1) tweaks (with much more to do)
     - [fix] Correct MailingList metadata generated by Build.PL
Commits on Dec 30, 2008
  1. Major API-related bug fix and first few example scripts

    authored
     - [doc] Removed reference to N::B::DHT::Node from N::B::Notes
     - [doc] Various documentation changes in N::B::Notes
     - [etc] Makefile.pl tries to require Module::Build 0.3
     - [api] Separated 'Path' arg tests in Net::BitTorrent::Torrent to provide more appropriate error messages
     - [fix] r45 N::B::Torrent->new failed to set set defaults, generate a peerid, or create a DHT object when called without arguments.
     - [api] N::B::T::Tracker->urls() is now public
     - [api] N::B::T::HTTP->url() and N::B::T::UDP->url() are now public
     - [etc] tracker-related tests updated to new url() and urls() public status
Commits on Dec 26, 2008
  1. Stable resume system and more socket fixes

    authored
     - Close all sockets on client destruction just in case (left a few FIN_WAIT1 connections on Win32)
     - The announce and discussion lists have been combined into a single list found at http://groups.google.com/group/net-bittorrent
     - N::B::Torrent->raw_data( [ RAW ] ) and N::B::Torrent->resume_data( [ RAW ] ) return bencoded or raw metadata based on bool parameter
     - N::B::T::T::UDP and N::B::T::T::HTTP have been updated to match N::B::T->raw_data( [ RAW ] ) change
     - N::B::T->hashcheck() clears the bitfield before starting
     - N::B::T::T::UDP and N::B::T::T::HTTP default to 0 when tcp_port is undef (happens when we fail to open port)
     - 'Progress' value in N::B::Torrent->as_string(1) only considers pieces we want
     - Documentation tweaks throughout
     - Resume system has been gutted and rewritten to be per-torrent only.
     - Suggestions for Client-wide resume is in Net::BitTorrent::Notes
     - s=c\Kie=ei=g;
     - scripts/bittorrent.pl skips hashcheck when resume data loads okay
Commits on Dec 18, 2008
  1. Resume system and DHT fixes

    authored
     - [etc] scripts/bittorrent.pl was reading nodes from the wrong file
     - [fix] N::BitTorrent is taint 'safe' again
     - [fix] Separated TCP and UDP socket creation in lib/Net/BitTorrent.pm
     - [fix] Reporting wrong port number in DHT announce (udp rather than tcp...)
     - [fix] Skip related tests on broken systems in t/700_classes/Net/BitTorrent.t
     - [API] N::B->_use_dht() now takes into account whether or not we have an open udp port
     - [API] Pre-alpha resume system for N::BitTorrent, N::B::DHT, and N::B::Torrent
     - [fix] N::B::DHT no longer sees boot nodes and 'regular' nodes differently
     - [etc] N::B::DHT attempts to contact all newly added nodes rather than throwing them in a bin (which we never got around to using...)
     - [fix] N::B::DHT deletes nodes we haven't seen in 15m
     - [fix] N::B::DHT deletes nodes with more than 10 errors (ignored/lost packets)
     - [fix] N::B::DHT resets fail count to zero when a node sends us a packet
     - [fix] N::B::DHT keeps a runny tally of how many good packets a node has sent
     - [fix] N::B::DHT pings every node every 8m
     - [fix] N::B::DHT heartbeat moved from 25s to 45s
     - [fix] N::B::DHT no longer dies when we get a bad packet
     - [API] Seeing as N::B::Torrent keeps nodes compact anyway, N::B::T->_compact_nodes() has been renamed N::B::T->_nodes() and N::B::T->_append_compact_nodes() is now N::B::T->_append_nodes().  Various modules have been updated in compliance.
     - [etc] The variables behind most private functions have been renamed to reflect their nature
     - [etc] scripts/bittorrent.pl can use the resume/restore functions (in their current state)
     - [doc] Light docs for resume stuff in N::B::Notes
Commits on Dec 11, 2008
  1. Mainline DHT is finally functional but still un(der)tested

    authored
     - [doc] link rfc://3986 to X<> in See Also; CPAN was confused by it.
     - [etc] Makefile.PL exits with 0 on < v5.8
     - [API] Net::BitTorrent::DHT::Node is gone.
     - [etc] t/700_classes/Net/BitTorrent/DHT/Node.t is gone
     - [doc] Temporary change to ip_filter callback documentation (DHT boot stuff)
     - [etc] ip_filter tests in t/700_classes/Net/BitTorrent/Peer.t are temporarily TODO tests (DHT boot stuff)
     - [API] Advanced output from N::B::->as_string() now includes local DHT NodeID
     - [API] N::B::DHT->_add_node() now expects a hashref with separate ip' and 'port' keys
     - [int] N::B::Peer->__handle_ext_protocol() changed to reflect change in expected params to N::B::DHT->_add_node();
     - [API] N::B::Protocol now exports a :dht tag. You get both the query and reply packet builders. Note: they are, at this time, undocumented and are certainly subject to change. In the future, these will be rolled into the :build tag. Probably.
     - [new] N::B::Torrent schedules future DHT _scrape and _announce processes
     - [fix] N::B::Version::gen_node_id() was just plain wrong
     - [etc] More messing around with scripts/bittorrent.pl (unstable/stupid stuff that will probably be rolled back before CPAN)
     - [etc] More in-the-middle DHT nodes to climb through in t/000_miniswarm/008_miniswarm_dht.t
Something went wrong with that request. Please try again.