Roger Dingledine [Sun, 30 Jan 2005 21:47:47 +0000 (21:47 +0000)]
Stop crashing when we're asking to close_if_marked a conn that
hasn't been connection_added yet. This happens when an exit conn
is in dns_wait and we get a relay end cell for it before it finishes.
We were silently leaking each of these marked conns in 0.0.9.x. Now
we actually free them.
Roger Dingledine [Sat, 29 Jan 2005 11:48:37 +0000 (11:48 +0000)]
if we fetch the dir from a mirror that has a wildly skewed
clock, then don't bother checking recommended-versions: it will
just make us sad.
as a side effect, people running obsolete versions and whose
clocks are wildly skewed will not be auto-shut-down. but they
will still get warns about their clock skew.
Roger Dingledine [Sun, 23 Jan 2005 10:04:03 +0000 (10:04 +0000)]
if we're going to ship with our own privoxy, we might as well
lock it down a bit more.
(does this break anything?)
thanks to Brett Carrington for pointing this out.
Roger Dingledine [Fri, 21 Jan 2005 00:45:18 +0000 (00:45 +0000)]
if we get an incredibly skewed timestamp from a dirserver mirror that
isn't a verified OR, don't complain very loudly -- it's probably him
that's wrong.
Nick Mathewson [Thu, 20 Jan 2005 20:18:32 +0000 (20:18 +0000)]
Have reason string for serverdesc post requests contain actual serverdesc status. Also fix return values of dirserv_add_descriptor to work as advertised.
Roger Dingledine [Thu, 20 Jan 2005 07:02:24 +0000 (07:02 +0000)]
The crowning hidden-service patch: prefer non-internal circuits
for normal connections, so we don't spend our internal circs on
other stuff and not have them when we need them.
Roger Dingledine [Wed, 19 Jan 2005 23:15:59 +0000 (23:15 +0000)]
Handle unavailable hidden services better. We try each intro point
until none are left, then we try to refetch the descriptor. If it's
the same one we had before, then close streams right then. Whenever
a new stream arrives, even if it's right after, optimistically try
refetching the descriptor, just in case.
Nick Mathewson [Wed, 19 Jan 2005 22:40:33 +0000 (22:40 +0000)]
Workaround for webservers that lie about Content-Encoding: Tor now tries to autodetect compressed directories and compression itself. (resolves bug 65)
Roger Dingledine [Wed, 19 Jan 2005 17:13:11 +0000 (17:13 +0000)]
bugfix for cvs: we were needing a rendezvous circ, so we cannibalized
a general circ, and called rend_client_rendcirc_has_opened(), which
called connection_ap_attach_pending(), which was needing a rendezvous
circ, so it cannibalized a general circuit, and called ...
Roger Dingledine [Mon, 17 Jan 2005 18:13:09 +0000 (18:13 +0000)]
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 config 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.
Once rendezvous circuits are established, keep using the same circuit as
long as you attach a new stream to it at least every 10 minutes. (So web
browsing doesn't require you to build new rend circs every 30 seconds.)
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.
Re-instate the ifdef's to use version-0 style introduce cells, since
there was yet another bug in handling version-1 style. We'll try switching
over again after 0.0.9 is obsolete.
Bugfix: 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.
Bugfix: we weren't actually publishing the hidden service descriptor when
it became dirty. So we only published it every 20 minutes or so, which
means when you first start your Tor, the hidden service will seem broken.
Roger Dingledine [Sun, 16 Jan 2005 02:49:58 +0000 (02:49 +0000)]
Sometime post 0.0.9, we should integrate an http proxy into Tor (maybe
as a third class of worker process), so we can stop shipping with the
beast that is Privoxy.