- DHT nodes found in metadata were not being added according to spec - Updating Changes to note the above fix
…speed things up? Probably not...
- Issue tracking had moved to github - Adding a .gitignore file for sanity
* 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
* 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
* 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)
…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.
* 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)
* 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
* 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
* 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
* [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.
…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
- [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
- [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
- 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
- [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
- [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