| Commit message (Expand) | Author | Age |
* | Add a new AddressMap directive to rewrite incoming socks addresses.•••Add a new TrackHostExits 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.
svn:r3641
| Roger Dingledine | 2005-02-22 |
* | bugfix: tor-resolve requests were ignoring .exit if there was•••a working circuit they could use instead.
svn:r3502
| Roger Dingledine | 2005-02-02 |
* | define TOR_FRAGILE if you want tor to give you a core when•••something goes wrong. this should only be used by people actively
tracking bugs.
svn:r3487
| Roger Dingledine | 2005-02-01 |
* | 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.
svn:r3380
| Roger Dingledine | 2005-01-20 |
* | 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.
svn:r3379
| Roger Dingledine | 2005-01-19 |
* | 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 ...
svn:r3370
| Roger Dingledine | 2005-01-19 |
* | remove some extra-verbose logs•••svn:r3361
| Roger Dingledine | 2005-01-17 |
* | 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.
svn:r3360
| Roger Dingledine | 2005-01-17 |
* | get rid of 0.0.8 backwards compatibility•••svn:r3353
| Roger Dingledine | 2005-01-13 |
* | when deciding if a port is handled and the port demands uptime, don't•••consider it handled if there's a circ that fits but isn't high-uptime.
svn:r3349
| Roger Dingledine | 2005-01-13 |
* | Annotate circuits w/ whether they aim to contain high uptime nodes and/or•••high capacity nodes. When building circuits, choose appropriate nodes.
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.
This means that every single node in an intro rend circuit, not just
the last one, will have a minimum uptime.
Boost the min uptime from an hour to 24 hours.
svn:r3339
| Roger Dingledine | 2005-01-12 |
* | when we haven't fetched a directory yet, or the last time we•••tried they were all unreachable, assume we are not connected to
the network.
when an application request comes in during this state, be
optimistic and assume we just reconnected. fetch a new directory
and if it works, begin making circuits.
svn:r3327
| Roger Dingledine | 2005-01-07 |
* | clean up logging,•••make it clearer which warns are bugs,
make the control log event match its specification,
point out a bug in how we deal with failure when renewing the tls context.
svn:r3138
| Roger Dingledine | 2004-12-13 |
* | I'm a bad person.•••Stop treating the uint16_t's as null-terminated strings,
and stop looking at the byte after them to see if it's null,
because sometimes you're not allowed to look there.
svn:r3108
| Roger Dingledine | 2004-12-07 |
* | Renormalize whitespace•••svn:r3095
| Nick Mathewson | 2004-12-07 |
* | New circuit building strategy: keep a list of ports that we've used in ...•••that will handle each such port. (We can extend this to include addresses
if exit policies shift to require that.) Seed us with port 80 so web
browsers won't complain that Tor is "slow to start up".
This was necessary because our old circuit building strategy just involved
counting circuits, and as time went by we would build up a big pile of
circuits that had peculiar exit policies (e.g. only exit to 9001-9100)
which would take up space in the circuit pile but never get used.
Fix router_compare_addr_to_addr_policy: it was not treating a port of *
as always matching, so we were picking reject *:* nodes as exit nodes too.
If you haven't used a clean circuit in an hour, throw it away, just to
be on the safe side.
This means after 6 hours a totally unused Tor client will have no
circuits open.
svn:r3078
| Roger Dingledine | 2004-12-05 |
* | React to eof immediately on non-open edge connections.•••Stop keeping track of num_retries for apconns, since they expire
after 60 seconds anyway.
When warning about retrying or giving up, print the address, so
the user knows which one it's talking about.
svn:r3073
| Roger Dingledine | 2004-12-04 |
* | bugfix: When we were checking to see if an ap_conn should time out•••waiting for its connected cell, we were calculating time from when the
ap_conn was created. So if it waited say 20 seconds before being attached,
then we would immediately decide that the circuit had timed out.
Also, make circuit_dump_by_conn() display actual circuit progress,
including circuits that haven't been attached to the conn yet but
hope to when it finishes connecting.
svn:r3072
| Roger Dingledine | 2004-12-04 |
* | Spell-check strings and comments•••svn:r3052
| Nick Mathewson | 2004-12-01 |
* | Let resolve conns retry/expire also, rather than sticking around forever.•••Put the check-if-requested-exitrouter-will-reject-us code in the
circuit_attach loop, so it gets checked periodically and not just
once at the beginning. This is useful in case the routerlist changes,
but also in case the address gets resolved into something that we learn
we'll reject.
svn:r3039
| Roger Dingledine | 2004-11-30 |
* | Enforce coding style.•••svn:r3025
| Nick Mathewson | 2004-11-30 |
* | Suggestion from weasel: Make tor --version --version dump the cvs Id of every...•••svn:r3019
| Nick Mathewson | 2004-11-29 |
* | put in initial support for ".nickname.exit" addresses, to let alice•••decide what exit node to use; based on a patch by geoff goodell.
needs more work: e.g. it goes bananas building new circuits when the
chosen exit node's exit policy rejects the connection.
svn:r3015
| Roger Dingledine | 2004-11-29 |
* | wrong is ok, and right is fine, but in between is apparently•••totally unacceptable to me.
svn:r3005
| Roger Dingledine | 2004-11-28 |
* | Normalize space: add one between every control keyword and control clause.•••svn:r3003
| Nick Mathewson | 2004-11-28 |
* | remove emacs droppings, since nick says he doesn't need them anymore•••svn:r2989
| Roger Dingledine | 2004-11-26 |
* | minor fixes•••svn:r2901
| Roger Dingledine | 2004-11-16 |
* | Resolve FIXME items: make the kill-unattached-AP timeout symbolic•••svn:r2793
| Nick Mathewson | 2004-11-10 |
* | Clean up copyrights.•••Break connection_consider_empty_buckets() out of
connection_read_bucket_decrement().
svn:r2698
| Roger Dingledine | 2004-11-07 |
* | Make options no longer a global variable.•••Now we can try setting an option but back out if it fails to parse, or
if it's disallowed (e.g. changing RunAsDaemon from 1 to 0).
Use parse_line_from_str rather than parse_line_from_file.
svn:r2692
| Roger Dingledine | 2004-11-06 |
* | - Implement all of control interface except authentication, setconfig,••• and actually making the sockets.
- Make sure that identity-based nicknames start with $.
- Use new string_join interface.
svn:r2661
| Nick Mathewson | 2004-11-03 |
* | Use strlcpy, not strcpy.•••svn:r2610
| Nick Mathewson | 2004-10-27 |
* | start the process of making 0.0.7* obsolete•••svn:r2565
| Roger Dingledine | 2004-10-17 |
* | don't assert multiple things in the same tor_assert()•••svn:r2544
| Roger Dingledine | 2004-10-16 |
* | fix paul gardner's assert bug.•••sometimes circuit_get_open_circ_or_launch() can return 0 but not
return a circuit, e.g. because too many circuits have failed recently
so the new one didn't launch. we need to tolerate that.
svn:r2438
| Roger Dingledine | 2004-10-11 |
* | fix the stale pointer assert bug reported by joe magic•••svn:r2436
| Roger Dingledine | 2004-10-11 |
* | use only 0.0.9pre1 and later servers for resolve cells•••svn:r2416
| Roger Dingledine | 2004-10-03 |
* | checking only 0.0.7 and 0.0.8 didn't work, because some dirservers•••files have really old descriptors for the authdirservers, so we're
asking them in the new format because they're too old.
now we actually compare the version to a cutoff version, and act
appropriately.
also take this chance to use only >=0.0.8 servers for dns resolves,
because of the recent bugs. we'll bump to >=0.0.9pre1 once there are
some servers running that.
svn:r2380
| Roger Dingledine | 2004-09-27 |
* | cleanup: use strcmpstart() in more places•••svn:r2372
| Roger Dingledine | 2004-09-23 |
* | be more aggressive about building circuits when we have no•••open circuits
svn:r2290
| Roger Dingledine | 2004-08-18 |
* | be more aggressive about trying to make circuits:•••try once a second for 30 seconds, and only when the entire previous
period has failed do we pause after MAX_CIRCUIT_FAILURES failures.
svn:r2281
| Roger Dingledine | 2004-08-18 |
* | only establish intro points after we've gotten a directory•••svn:r2276
| Roger Dingledine | 2004-08-18 |
* | we were counting incorrectly when trying to figure out whether•••a given AP stream was being handled or not.
(how did this work?)
svn:r2077
| Roger Dingledine | 2004-07-21 |
* | abstract ORPort/SocksPort checks into server_mode(), proxy_mode(), clique_mod...•••svn:r2054
| Nick Mathewson | 2004-07-18 |
* | refuse to build a circuit before the directory has arrived•••this will prevent a few of the 'couldn't decrypt onionskin' errors, maybe
svn:r2036
| Roger Dingledine | 2004-07-13 |
* | More digest/nickname fixes•••svn:r2000
| Nick Mathewson | 2004-07-02 |
* | some of the infrastructure to let ORs connect on demand•••svn:r1998
| Roger Dingledine | 2004-07-02 |
* | Implement RESOLVE/RESOLVED cells and socks resolve code•••svn:r1978
| Nick Mathewson | 2004-06-17 |
* | bugfix: if a circuit if borderline too old, then count it as too old.•••bugfix: we were retrying the same circuit after getting a resolve
failure. so of course the next two tries would fail too. now we try
a new circuit each time (at most three times).
svn:r1867
| Roger Dingledine | 2004-05-15 |
* | Break files apart into more modules••• * \file circuitbuild.c
* \brief The actual details of building circuits.
* \file circuitlist.c
* \brief Manage the global circuit list.
* \file circuituse.c
* \brief Launch the right sort of circuits, attach streams to them.
* \file connection_edge.c
* \brief Handle edge streams.
* \file onion.c
* \brief Functions to queue create cells, and handle onionskin
* parsing and creation.
* \file relay.c
* \brief Handle relay cell encryption/decryption, plus packaging and
* receiving from circuits.
svn:r1863
| Roger Dingledine | 2004-05-13 |