
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... ======================================== * Microdescriptor Support Stem can now read and parse microdescritpors (#8253), 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 (https://trac.torproject.org/8323#comment:2), and tor lacks the usual methods for retrieving them (#8323) and v3 network status information (#7953). Controllers will often need to read descriptor content from the data directory until those are fixed. * 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! (#8049) * Descriptor readers can now optionally provide network status documents rather than the entries they contain. Feature request by Karsten. (#8050) * Calling str() on Descriptors choked if it contained unicode content. Caught by Sathyanarayanan. (#8265) * Thanks to Karsten Descriptors now provide hex digests. (#8036) * Discussed the new 'flag-thresholds' attribute and added support for it to stem. (#8165) * Descriptor parsers that used readline() could choke if derived from a descriptor archive. Caught by Karsten. ======================================== General tasks included... * Discussed proposal 218 with Karsten on tor-dev@... https://lists.torproject.org/pipermail/tor-dev/2013-February/004411.html * 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. (#7831} * 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. {#8162) * Patch from Abhishek so our tests avoid static /tmp usage. (#7926) * Added copyright notices throughout most of our codebase. Suggested by Juan. (#7954) * Addressed issues with get_process_name() on OSX. Caught by Sathyanarayanan. (#8266) Cheers! -Damian