This branch implements/upgrades the following functionality:
Rudimentary circuit-level and stream-level flow control/link throttling. Note that not all cases are handled completely correctly, but I tried to make a sane default choice if handling it according to the spec was too complex to do right now. This includes buffering code that really needs further testing.
Implement relaytruncatedcell, relaydropcell, and relaysendmecell.
More intelligently tear down circuits and streams (i.e. send a DESTROY and RELAY_END cell when appropriate).
Make circuit destroy itself if it gets a protocol-violating cell, log and drop all other weird/unexpected ones.
Make all default circuits able to handle IPv6.
Add decryptUntilRecognized() to handle relay cells from different hops
Add encryptToTarget() to handle sending relay control cells to different hops
Make connection unpack only "connection-level" cells and leave the rest of the work to the destination circuit.
Fix a minor bug in netstatus where the cache file is occasionally overwritten.
Minor crypto cleanup and removal of some timing attacks.
This branch closes #73, #72, #70, #69, #68, #66, #64, #63, and #52.
(Note: some of this code is kind of messy and not pretty to look at. It fixes a bunch of open issues and adds the ability to do things "correctly"...but it's not always pretty. This should be cleaned up later.)
This branch implements/upgrades the following functionality:
This branch closes #73, #72, #70, #69, #68, #66, #64, #63, and #52.
(Note: some of this code is kind of messy and not pretty to look at. It fixes a bunch of open issues and adds the ability to do things "correctly"...but it's not always pretty. This should be cleaned up later.)