updated documentation
implemented minimumIdle
- corrected idle timeout
implemented idleTimeout: if a connection has no activity for more than idle time, retire it (now retiring means closing)
version 0.9:
implemented idle timeout
- each database type has its abstractization (pool and connection classes)
new version 0.5
- fixed a bug in getting new connections:
updated documentation
version 0.4
added BSD 3-clause license
added support for PostgreSQL
added support for MySQL
initial import
Added threading for tracker and peerwire protocols
Limited number of concurrent peer connections.
reverting to non state machine variant
Modified algorithm of working peer selection.
bencoding rewrite + network code moved to a module
bitfield messages coding and decoding
Added README, INSTALL, ChangeLog files.
Tracker protocol finished (plus other changes where needed).
Done module with tracker protocol. Implemented as a finite state machine.
Splitted code into more files, according to good programming principles. :)
adding trackerprotocol_state_machine.py
nothing yet
Only now functions that make messages and handshake are finished. Forgot last time that all messages must be properly bencoded.
Added necessary variables for peerwire protocol and corrected where required to keep consistency.
Finished functions that generate messages transmitted in peerwire protocol.
Corrected some mistakes in code. Should be all OK until downloading part from peer(s).
Forgot to uncomment a variable.
fixed bitfield manipulation
peer bitfield used in piece-to-download selection; random selection of this piece
Finished (finally!) functions for decoding received messages.
removing trackerprotocol.py ...
send bitfield, 'have' messages to peers, multitracker case, peers from incoming connections
first import
Nothing new.
checking received handshake
Added NEWS file.
Actualized ChangeLog file.
actulize infi in TODO
Added choking algorithm to peerwire protocol.
state machine for tracker protocol
updated source code documentation
finished implementing UDP tracker protocol
updated documentation
added finite state machine module
removed useless state machine file
* fixed typos
moved peer processing in specific functions, for each state (disconnected, connected, handshaked)
updated docs for new release
check if we have the data requested by peer
implemented encoding and decoding of messages belonging to UDP tracker protocol
cleanup
removed last references to to_connect and to_disconnect lists
Moved parsing of torrent file to TorrentDownloader module.
Limited number of concurrent peer connections.
Bugfix: when connecting to peers, sometimes peerwire protocol could modify list of peers_to_connect in middle of cycle, leaving the list in an inconsistent state.
deleted commented-out code
reverted to released version 0.4.2
Updated documentation. See NEWS, README and ChangeLog for details.
lrnet: eliminated the thread for running peerwire connections
Bugfix: after implementing correctly multitracker protocol, tracker thread was not responding to user commands (revealed bug). Solved it (now tracker thread exits immediately after finishing the attempt to connect to tracker, if command is 'stop' or 'quit').
work-in-progress
implemented cycle of udp tracker protocol (no encoding or decoding of udp tracker protocol messages)
Updated changelog.
Added logging. See ChangeLog for Details.
Updated TODO, Changelog, NEWS.
mark working time for disconnected, connected and handhaked peers: disconnected when trying to connect, connected and handshaked always
updated documentation
Foundation for multiple types of tracker URLs. See ChangeLog for details.
Moved thread starting and stopping to TorrentDownloader.
readded bencoding.py module; do not know why it was not transferred when Sourceforge changed interface
Preliminary steps in implmenting download resuming and some crude (command-line) user interface.
marked as DEPRECATED some variables; cleanup; brought function and class docs up to date
corrected spelling mistakes
Simple command-line user interface is now available. Bugfix (did not closed correctly all connections with peers). Listening server tries to bind to a port in range 6881-6889; program fails to start if none available.
implemented connection_in
Workaround for nondeterministic DNS resolving for UDP trackers. Added UDP error message parsing.
updated ChangeLog
cleanup
Bugfix: wasn't passing over all URL in one pass, but only one URL was used, so implemented proper processing of multitracker case as follows: all URLs in each tier are checked before going to next tier. URLs within each tier are processed in a randomly chosen order, i.e. the tracker list is shuffled at initialization of trackerprotocol module and then parsed in order; if a connection with a tracker succeeds, the tracker URL is moved to the front of the tier.
Basic piece caching implemented. No caching policy yet.
state machine governing use interface in libertasretis.py
modified tracker protocol to stop/quit faster; default interval between
bugfix: syntax error
Fixed bugs in piececache.py. Moved piece caching thread start to libertasretis.py module.
Changelog update.
Bugfix: get_our_flag() did not return always.
Removed command line options. Use positional arguments.
removed logging from TODO
don't save empty peers list
tracker protocol is now a multiprocessing.Processs instance in order to be terminated when user gives command; otherwise a Thread waits until HTTP connection timeouts