Loading ChangeLog +188 −0 Original line number Diff line number Diff line Changes in version 0.1.0.1-rc1 - 2005-03-xx o New features: - Add reachability testing. Your Tor server will automatically try to see if its ORPort and DirPort are reachable from the outside, and it won't upload its descriptor until it decides they are. - Handle unavailable hidden services better. Handle slow or busy hidden services better. - Add support for CONNECTing through https proxies, with "HttpsProxy" config option. - New exit policy: accept most low-numbered ports, rather than rejecting most low-numbered ports. - More Tor controller support (still experimental). See http://tor.eff.org/doc/control-spec.txt for all the new features, including signals to emulate unix signals from any platform; redirectstream; extendcircuit; mapaddress; getinfo; postdescriptor; closestream; closecircuit; etc. - Make nt services work and start on startup on win32 (based on patch by Matt Edman). - Add a new AddressMap config directive to rewrite incoming socks addresses. This lets you, for example, declare an implicit required exit node for certain sites. - Add a new TrackHostExits config directive to trigger addressmaps for certain incoming socks addresses -- for sites that break when your exit keeps changing. - Redo the client-side dns cache so it's just an addressmap too. - Notice when our IP changes, and reset stats/uptime/reachability. - When an application is using socks5, give him the whole variety of potential socks5 responses (connect refused, host unreachable, etc), rather than just "success" or "failure". - A more sane version numbering system. See http://tor.eff.org/cvs/tor/doc/version-spec.txt for details. - New contributed script "exitlist": a simple python script to parse directories and find tor nodes that exit to listed nodes/ports. - New contributed script "privoxy-tor-toggle" to toggle whether privoxy uses tor. Seems to be configured for debian by default. - Report HTTP reasons to when getting a response from directory servers -- so you can actually know what went wrong. - New config option MaxAdvertisedBandwidth which lets you advertise a low bandwidthrate (to not attract as many circuits) while still allowing a higher bandwidthrate in reality. o Robustness/stability fixes: - Make Tor use Niels Provos's libevent instead of its current poll-but-sometimes-select mess. This will let us use faster async cores (like epoll, kpoll, and /dev/poll), and hopefully work better on Windows too. - pthread support now too. This was forced because when we forked, we ended up wasting a lot of duplicate ram over time. Also switch to foo_r versions of some library calls to allow reentry and threadsafeness. - Better handling for heterogeneous / unreliable nodes: - Annotate circuits w/ whether they aim to contain high uptime nodes and/or high capacity nodes. When building circuits, choose appropriate nodes. - This means that every single node in an intro rend circuit, not just the last one, will have a minimum uptime. - New config option LongLivedPorts to indicate application streams that will want high uptime circuits. - When attaching a stream to a circuit, pay attention to its requirements. - Servers reset uptime when a dir fetch entirely fails. This hopefully reflects stability of the server's network connectivity. - If somebody starts his tor server in Jan 2004 and then fixes his clock, don't make his published uptime be a year. - Reset published uptime when you wake up from hibernation. - Introduce a notion of 'internal' circs, which are chosen without regard to the exit policy of the last hop. Intro and rendezvous circs must be internal circs, to avoid leaking information. Resolve and connect streams can use internal circs if they want. - New circuit pooling algorithm: make sure to have enough circs around to satisfy any predicted ports, and also make sure to have 2 internal circs around if we've required internal circs lately (with high uptime if we've seen that lately). - Split NewCircuitPeriod option into NewCircuitPeriod (30 secs), which describes how often we retry making new circuits if current ones are dirty, and MaxCircuitDirtiness (10 mins), which describes how long we're willing to make use of an already-dirty circuit. - Cannibalize GENERAL circs to be C_REND, C_INTRO, S_INTRO, and S_REND circ as necessary, if there are any completed ones lying around when we try to launch one. - Make hidden services try to establish a rendezvous for 30 seconds, rather than for n (where n=3) attempts to build a circuit. - Change SHUTDOWN_WAIT_LENGTH from a fixed 30 secs to a config option "ShutdownWaitLength". - Try to be more zealous about calling connection_edge_end when things go bad with edge conns in connection.c. - Revise tor-spec to add more/better stream end reasons. - Revise all calls to connection_edge_end to avoid sending "misc", and to take errno into account where possible. o Bug fixes: - Fix several double-mark-for-close bugs, e.g. where we were finding a conn for a cell even if that conn is already marked for close. - Make sequence of log messages when starting on win32 with no config file more reasonable. - When choosing an exit node for a new non-internal circ, don't take into account whether it'll be useful for any pending x.onion addresses -- it won't. - Turn addr_policy_compare from a tristate to a quadstate; this should help address our "Ah, you allow 1.2.3.4:80. You are a good choice for google.com" problem. - Make "platform" string in descriptor more accurate for Win32 servers, so it's not just "unknown platform". - Fix an edge case in parsing config options (thanks weasel) if they say "--" on the commandline, it's not an option - Reject odd-looking addresses at the client (e.g. addresses that contain a colon), rather than having the server drop them because they're malformed. - tor-resolve requests were ignoring .exit if there was a working circuit they could use instead. - REUSEADDR on normal platforms means you can rebind to the port right after somebody else has let it go. But REUSEADDR on win32 means to let you bind to the port _even when somebody else already has it bound_. So, don't do that on Win32. - Change version parsing logic: a version is "obsolete" if it is not recommended and (1) there is a newer recommended version in the same series, or (2) there are no recommended versions in the same series, but there are some recommended versions in a newer series. A version is "new" if it is newer than any recommended version in the same series. o Helpful fixes: - Require BandwidthRate to be at least 20kB/s for servers - When a dirserver causes you to give a warn, mention which dirserver it was. - New config option DirAllowPrivateAddresses for authdirservers. Now by default they refuse router descriptors that have non-IP or private-IP addresses. - Stop publishing socksport in the directory, since it's not actually meant to be public. For compatibility, publish a 0 there for now. - Change DirFetchPeriod/StatusFetchPeriod to have a special "Be smart" value, that is low for servers and high for clients. - If our clock jumps forward by 100 seconds or more, assume something has gone wrong with our network and abandon all not-yet-used circs. - Warn when exit policy implicitly allows local addresses. - If we get an incredibly skewed timestamp from a dirserver mirror that isn't a verified OR, don't warn -- it's probably him that's wrong. - Since we ship our own privoxy on os x, tweak it so it doesn't write cookies to disk and doesn't log each web request to disk. (Thanks to Brett Carrington for pointing this out.) - When a client asks us for a dir mirror and we don't have one, launch an attempt to get a fresh one. - If we're hibernating and we get a sigint, exit immediately. - Add --with-dmalloc ./configure option, to track memory leaks. - And try to free all memory on closing, so we can detect what we're leaking. - Cache local dns resolves correctly even when they're .exit addresses. - Give a better warning when some other server advertises an ORPort that is actually an apache running ssl. - Add "opt hibernating 1" to server descriptor to make it clearer whether the server is hibernating. Changes in version 0.0.9.6 - 2005-03-24 o Bugfixes on 0.0.9.x (crashes and asserts): - Add new end stream reasons to maintainance branch. Fix bug where reason (8) could trigger an assert. Prevent bug from recurring. - Apparently win32 stat wants paths to not end with a slash. - Fix assert triggers in assert_cpath_layer_ok(), where we were blowing away the circuit that conn->cpath_layer points to, then checking to see if the circ is well-formed. Backport check to make sure we dont use the cpath on a closed connection. - Prevent circuit_resume_edge_reading_helper() from trying to package inbufs for marked-for-close streams. - Don't crash on hup if your options->address has become unresolvable. - Some systems (like OS X) sometimes accept() a connection and tell you the remote host is 0.0.0.0:0. If this happens, due to some other mis-features, we get confused; so refuse the conn for now. o Bugfixes on 0.0.9.x (other): - Fix harmless but scary "Unrecognized content encoding" warn message. - Add new stream error reason: TORPROTOCOL reason means "you are not speaking a version of Tor I understand; say bye-bye to your stream." - Be willing to cache directories from up to ROUTER_MAX_AGE seconds into the future, now that we are more tolerant of skew. This resolves a bug where a Tor server would refuse to cache a directory because all the directories it gets are too far in the future; yet the Tor server never logs any complaints about clock skew. - Mac packaging magic: make man pages useable, and do not overwrite existing torrc files. - Make OS X log happily to /var/log/tor/tor.log Changes in version 0.0.9.5 - 2005-02-22 o Bugfixes on 0.0.9.x: - Fix an assert race at exit nodes when resolve requests fail. Loading Loading
ChangeLog +188 −0 Original line number Diff line number Diff line Changes in version 0.1.0.1-rc1 - 2005-03-xx o New features: - Add reachability testing. Your Tor server will automatically try to see if its ORPort and DirPort are reachable from the outside, and it won't upload its descriptor until it decides they are. - Handle unavailable hidden services better. Handle slow or busy hidden services better. - Add support for CONNECTing through https proxies, with "HttpsProxy" config option. - New exit policy: accept most low-numbered ports, rather than rejecting most low-numbered ports. - More Tor controller support (still experimental). See http://tor.eff.org/doc/control-spec.txt for all the new features, including signals to emulate unix signals from any platform; redirectstream; extendcircuit; mapaddress; getinfo; postdescriptor; closestream; closecircuit; etc. - Make nt services work and start on startup on win32 (based on patch by Matt Edman). - Add a new AddressMap config directive to rewrite incoming socks addresses. This lets you, for example, declare an implicit required exit node for certain sites. - Add a new TrackHostExits config directive to trigger addressmaps for certain incoming socks addresses -- for sites that break when your exit keeps changing. - Redo the client-side dns cache so it's just an addressmap too. - Notice when our IP changes, and reset stats/uptime/reachability. - When an application is using socks5, give him the whole variety of potential socks5 responses (connect refused, host unreachable, etc), rather than just "success" or "failure". - A more sane version numbering system. See http://tor.eff.org/cvs/tor/doc/version-spec.txt for details. - New contributed script "exitlist": a simple python script to parse directories and find tor nodes that exit to listed nodes/ports. - New contributed script "privoxy-tor-toggle" to toggle whether privoxy uses tor. Seems to be configured for debian by default. - Report HTTP reasons to when getting a response from directory servers -- so you can actually know what went wrong. - New config option MaxAdvertisedBandwidth which lets you advertise a low bandwidthrate (to not attract as many circuits) while still allowing a higher bandwidthrate in reality. o Robustness/stability fixes: - Make Tor use Niels Provos's libevent instead of its current poll-but-sometimes-select mess. This will let us use faster async cores (like epoll, kpoll, and /dev/poll), and hopefully work better on Windows too. - pthread support now too. This was forced because when we forked, we ended up wasting a lot of duplicate ram over time. Also switch to foo_r versions of some library calls to allow reentry and threadsafeness. - Better handling for heterogeneous / unreliable nodes: - Annotate circuits w/ whether they aim to contain high uptime nodes and/or high capacity nodes. When building circuits, choose appropriate nodes. - This means that every single node in an intro rend circuit, not just the last one, will have a minimum uptime. - New config option LongLivedPorts to indicate application streams that will want high uptime circuits. - When attaching a stream to a circuit, pay attention to its requirements. - Servers reset uptime when a dir fetch entirely fails. This hopefully reflects stability of the server's network connectivity. - If somebody starts his tor server in Jan 2004 and then fixes his clock, don't make his published uptime be a year. - Reset published uptime when you wake up from hibernation. - Introduce a notion of 'internal' circs, which are chosen without regard to the exit policy of the last hop. Intro and rendezvous circs must be internal circs, to avoid leaking information. Resolve and connect streams can use internal circs if they want. - New circuit pooling algorithm: make sure to have enough circs around to satisfy any predicted ports, and also make sure to have 2 internal circs around if we've required internal circs lately (with high uptime if we've seen that lately). - Split NewCircuitPeriod option into NewCircuitPeriod (30 secs), which describes how often we retry making new circuits if current ones are dirty, and MaxCircuitDirtiness (10 mins), which describes how long we're willing to make use of an already-dirty circuit. - Cannibalize GENERAL circs to be C_REND, C_INTRO, S_INTRO, and S_REND circ as necessary, if there are any completed ones lying around when we try to launch one. - Make hidden services try to establish a rendezvous for 30 seconds, rather than for n (where n=3) attempts to build a circuit. - Change SHUTDOWN_WAIT_LENGTH from a fixed 30 secs to a config option "ShutdownWaitLength". - Try to be more zealous about calling connection_edge_end when things go bad with edge conns in connection.c. - Revise tor-spec to add more/better stream end reasons. - Revise all calls to connection_edge_end to avoid sending "misc", and to take errno into account where possible. o Bug fixes: - Fix several double-mark-for-close bugs, e.g. where we were finding a conn for a cell even if that conn is already marked for close. - Make sequence of log messages when starting on win32 with no config file more reasonable. - When choosing an exit node for a new non-internal circ, don't take into account whether it'll be useful for any pending x.onion addresses -- it won't. - Turn addr_policy_compare from a tristate to a quadstate; this should help address our "Ah, you allow 1.2.3.4:80. You are a good choice for google.com" problem. - Make "platform" string in descriptor more accurate for Win32 servers, so it's not just "unknown platform". - Fix an edge case in parsing config options (thanks weasel) if they say "--" on the commandline, it's not an option - Reject odd-looking addresses at the client (e.g. addresses that contain a colon), rather than having the server drop them because they're malformed. - tor-resolve requests were ignoring .exit if there was a working circuit they could use instead. - REUSEADDR on normal platforms means you can rebind to the port right after somebody else has let it go. But REUSEADDR on win32 means to let you bind to the port _even when somebody else already has it bound_. So, don't do that on Win32. - Change version parsing logic: a version is "obsolete" if it is not recommended and (1) there is a newer recommended version in the same series, or (2) there are no recommended versions in the same series, but there are some recommended versions in a newer series. A version is "new" if it is newer than any recommended version in the same series. o Helpful fixes: - Require BandwidthRate to be at least 20kB/s for servers - When a dirserver causes you to give a warn, mention which dirserver it was. - New config option DirAllowPrivateAddresses for authdirservers. Now by default they refuse router descriptors that have non-IP or private-IP addresses. - Stop publishing socksport in the directory, since it's not actually meant to be public. For compatibility, publish a 0 there for now. - Change DirFetchPeriod/StatusFetchPeriod to have a special "Be smart" value, that is low for servers and high for clients. - If our clock jumps forward by 100 seconds or more, assume something has gone wrong with our network and abandon all not-yet-used circs. - Warn when exit policy implicitly allows local addresses. - If we get an incredibly skewed timestamp from a dirserver mirror that isn't a verified OR, don't warn -- it's probably him that's wrong. - Since we ship our own privoxy on os x, tweak it so it doesn't write cookies to disk and doesn't log each web request to disk. (Thanks to Brett Carrington for pointing this out.) - When a client asks us for a dir mirror and we don't have one, launch an attempt to get a fresh one. - If we're hibernating and we get a sigint, exit immediately. - Add --with-dmalloc ./configure option, to track memory leaks. - And try to free all memory on closing, so we can detect what we're leaking. - Cache local dns resolves correctly even when they're .exit addresses. - Give a better warning when some other server advertises an ORPort that is actually an apache running ssl. - Add "opt hibernating 1" to server descriptor to make it clearer whether the server is hibernating. Changes in version 0.0.9.6 - 2005-03-24 o Bugfixes on 0.0.9.x (crashes and asserts): - Add new end stream reasons to maintainance branch. Fix bug where reason (8) could trigger an assert. Prevent bug from recurring. - Apparently win32 stat wants paths to not end with a slash. - Fix assert triggers in assert_cpath_layer_ok(), where we were blowing away the circuit that conn->cpath_layer points to, then checking to see if the circ is well-formed. Backport check to make sure we dont use the cpath on a closed connection. - Prevent circuit_resume_edge_reading_helper() from trying to package inbufs for marked-for-close streams. - Don't crash on hup if your options->address has become unresolvable. - Some systems (like OS X) sometimes accept() a connection and tell you the remote host is 0.0.0.0:0. If this happens, due to some other mis-features, we get confused; so refuse the conn for now. o Bugfixes on 0.0.9.x (other): - Fix harmless but scary "Unrecognized content encoding" warn message. - Add new stream error reason: TORPROTOCOL reason means "you are not speaking a version of Tor I understand; say bye-bye to your stream." - Be willing to cache directories from up to ROUTER_MAX_AGE seconds into the future, now that we are more tolerant of skew. This resolves a bug where a Tor server would refuse to cache a directory because all the directories it gets are too far in the future; yet the Tor server never logs any complaints about clock skew. - Mac packaging magic: make man pages useable, and do not overwrite existing torrc files. - Make OS X log happily to /var/log/tor/tor.log Changes in version 0.0.9.5 - 2005-02-22 o Bugfixes on 0.0.9.x: - Fix an assert race at exit nodes when resolve requests fail. Loading