Hi all. Between being a short month and oncall for work I didn’t get as much done as I’d like. What time I did have for tor mostly went into stem’s descriptor functionality. In particular…
Stem can now read and parse microdescritpors, with controller methods coming later this weekend.
I understand the desire for lightweight descriptors but they’re a step backward for controllers. Their lack of fingerprints make them clunky to use, and tor lacks the usual methods for retrieving them (ticket) and v3 network status information (ticket). Controllers will often need to read descriptor content from the data directory until those are fixed.
General Descriptor Improvements
Invalid descriptor content within archives caused the reader to stop processing content from the archive. This bug is simple in retrospect but cost me around a week of hair pulling frustration to sort out. Thanks to Karsten for catching it! (ticket)
Descriptor readers can now optionally provide network status documents rather than the entries they contain. Feature request by Karsten. (ticket)
Calling str() on Descriptors choked if it contained unicode content. Caught by Sathyanarayanan. (ticket)
Thanks to Karsten Descriptors now provide hex digests. (ticket)
Discussed the new ‘flag-thresholds’ attribute and added support for it to stem. (ticket)
Descriptor parsers that used readline() could choke if derived from a descriptor archive. Caught by Karsten.
Discussed proposal 218 with Karsten on tor-dev@. (thread)
Changed our consensus-tracker script to alarm for non-exits (we had an undetected sybil attack early in the month). Also fixed an issue where the script gobbled up way too much memory. (ticket)
Made a few backward incompatible changes to improve stem’s usability in anticipation of our March API freeze…
- Version comparison is now done through normal comparison operators rather than a meets_requirements() method.
- Renamed the keyword arguments for Controller.from_port() and others to be less verbose (for instance ‘control_port’ to just ‘port’).
- Dropped the ‘path’ arg from parse_file(), it was never intended for external callers.
Variety of bug fixes…
- We didn’t recognize a ‘NEVER’ date in ADDRMAP events. Caught by Desoxy. (ticket)
- Patch from Abhishek so our tests avoid static /tmp usage. (ticket)
- Added copyright notices throughout most of our codebase. Suggested by Juan. (ticket)
- Addressed issues with get_process_name() on OSX. Caught by Sathyanarayanan. (ticket)