[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Tor 0.1.1.9-alpha is out
This is the ninth development snapshot for the 0.1.1.x series. We
fix some memory leaks from the last snapshot, remove a lot of extra
confusing log warnings, and fix other bugs.
Changes in version 0.1.1.9-alpha - 2005-11-15
o Usability improvements:
- Start calling it FooListenAddress rather than FooBindAddress,
since few of our users know what it means to bind an address
- Reduce clutter in server logs. We're going to try to make
them actually usable now. New config option ProtocolWarnings that
lets you hear about how _other Tors_ are breaking the protocol. Off
- Divide log messages into logging domains. Once we put some sort
of interface on this, it will let people looking at more verbose
log levels specify the topics they want to hear more about.
- Make directory servers return better http 404 error messages
instead of a generic "Servers unavailable".
- Check for even more Windows version flags when writing the platform
string in server descriptors, and note any we don't recognize.
- Clean up more of the OpenSSL memory when exiting, so we can detect
memory leaks better.
- Make directory authorities be non-versioning, non-naming by
default. Now we can add new directory servers without requiring
their operators to pay close attention.
- When logging via syslog, include the pid whenever we provide
a log entry. Suggested by Todd Fries.
o Performance improvements:
- Directory servers now silently throw away new descriptors that
haven't changed much if the timestamps are similar. We do this to
tolerate older Tor servers that upload a new descriptor every 15
minutes. (It seemed like a good idea at the time.)
- Inline bottleneck smartlist functions; use fast versions by default.
- Add a "Map from digest to void*" abstraction digestmap_t so we
can do less hex encoding/decoding. Use it in router_get_by_digest()
to resolve a performance bottleneck.
- Allow tor_gzip_uncompress to extract as much as possible from
truncated compressed data. Try to extract as many
descriptors as possible from truncated http responses (when
- Make circ->onionskin a pointer, not a static array. moria2 was using
125000 circuit_t's after it had been up for a few weeks, which
translates to 20+ megs of wasted space.
- The private half of our EDH handshake keys are now chosen out
of 320 bits, not 1024 bits. (Suggested by Ian Goldberg.)
o Security improvements:
- Start making directory caches retain old routerinfos, so soon
clients can start asking by digest of descriptor rather than by
fingerprint of server.
- Add half our entropy from RAND_poll in OpenSSL. This knows how
to use egd (if present), openbsd weirdness (if present), vms/os2
weirdness (if we ever port there), and more in the future.
o Bugfixes on 0.1.0.x:
- Do round-robin writes of at most 16 kB per write. This might be
more fair on loaded Tor servers, and it might resolve our Windows
crash bug. It might also slow things down.
- Our TLS handshakes were generating a single public/private
keypair for the TLS context, rather than making a new one for
each new connections. Oops. (But we were still rotating them
periodically, so it's not so bad.)
- When we were cannibalizing a circuit with a particular exit
node in mind, we weren't checking to see if that exit node was
already present earlier in the circuit. Oops.
- When a Tor server's IP changes (e.g. from a dyndns address),
upload a new descriptor so clients will learn too.
- Really busy servers were keeping enough circuits open on stable
connections that they were wrapping around the circuit_id
space. (It's only two bytes.) This exposed a bug where we would
feel free to reuse a circuit_id even if it still exists but has
been marked for close. Try to fix this bug. Some bug remains.
- If we would close a stream early (e.g. it asks for a .exit that
we know would refuse it) but the LeaveStreamsUnattached config
option is set by the controller, then don't close it.
o Bugfixes on 0.1.1.8-alpha:
- Fix a big pile of memory leaks, some of them serious.
- Do not try to download a routerdesc if we would immediately reject
it as obsolete.
- Resume inserting a newline between all router descriptors when
generating (old style) signed directories, since our spec says
- When providing content-type application/octet-stream for
server descriptors using .z, we were leaving out the
content-encoding header. Oops. (Everything tolerated this just
fine, but that doesn't mean we need to be part of the problem.)
- Fix a potential seg fault in getconf and getinfo using version 1
of the controller protocol.
- Avoid crash: do not check whether DirPort is reachable when we
are suppressing it because of hibernation.
- Make --hash-password not crash on exit.