| Commit message (Expand) | Author | Age |
* | Remove delay to become HSDir in privnets | Sebastian Hahn | 2010-10-26 |
* | Properly refcount client_identity_key•••In a2bb0bf we started using a separate client identity key. When we are
in "public server mode" (that means not a bridge) we will use the same
key. Reusing the key without doing the proper refcounting leads to a
segfault on cleanup during shutdown. Fix that.
Also introduce an assert that triggers if our refcount falls below 0.
That should never happen.
| Sebastian Hahn | 2010-10-26 |
* | Fix a whitespace error | Nick Mathewson | 2010-10-21 |
* | Merge branch 'bug988-nm' into maint-0.2.2 | Nick Mathewson | 2010-10-21 |
|\ |
|
| * | Add some asserts to get_{tlsclient|server}_identity_key•••We now require that:
- Only actual servers should ever call get_server_identity_key
- If you're being a client or bridge, the client and server keys should
differ.
- If you're being a public relay, the client and server keys
should be the same.
| Nick Mathewson | 2010-10-21 |
| * | Rename get_client_identity_key to get_tlsclient_identity_key | Nick Mathewson | 2010-10-21 |
| * | Maintain separate server and client identity keys when appropriate.•••Fixes a bug described in ticket #988.
| Robert Ransom | 2010-10-04 |
| * | Maintain separate server and client TLS contexts.•••Fixes bug #988.
| Robert Ransom | 2010-10-04 |
| * | Refactor tor_tls_context_new:•••* Make tor_tls_context_new internal to tortls.c, and return the new
tor_tls_context_t from it.
* Add a public tor_tls_context_init wrapper function to replace it.
| Robert Ransom | 2010-10-04 |
| * | Add public_server_mode function. | Robert Ransom | 2010-10-04 |
* | | Fix a remaining bug in Robert's bug1859 fix.•••When intro->extend_info is created for an introduction point, it
only starts out with a nickname, not necessarily an identity digest.
Thus, doing router_get_by_digest isn't necessarily safe.
| Nick Mathewson | 2010-10-21 |
* | | Merge remote branch 'hoganrobert/bug1859' into maint-0.2.2 | Nick Mathewson | 2010-10-21 |
|\ \ |
|
| * | | Issues with router_get_by_nickname()•••https://trac.torproject.org/projects/tor/ticket/1859
Use router_get_by_digest() instead of router_get_by_hexdigest()
in circuit_discard_optional_exit_enclaves() and
rend_client_get_random_intro(), per Nick's comments.
Using router_get_by_digest() in rend_client_get_random_intro() will
break hidden services published by Tor versions pre 0.1.2.18 and
0.2.07-alpha as they only publish by nickname. This is acceptable
however as these versions only publish to authority tor26 and
don't work for versions in the 0.2.2.x series anyway.
| Robert Hogan | 2010-10-17 |
| * | | Issues with router_get_by_nickname()•••https://trac.torproject.org/projects/tor/ticket/1859
There are two problems in this bug:
1. When an OP makes a .exit request specifying itself as the exit, and the exit
is not yet listed, Tor gets all the routerinfos needed for the circuit but
discovers in circuit_is_acceptable() that its own routerinfo is not in the
routerdigest list and cannot be used. Tor then gets locked in a cycle of
repeating these two steps. When gathering the routerinfos for a circuit,
specifically when the exit has been chosen by .exit notation, Tor needs to
apply the same rules it uses later on when deciding if it can build a
circuit with those routerinfos.
2. A different bug arises in the above situation when the Tor instance's
routerinfo *is* listed in the routerlist, it shares its nickname with a
number of other Tor nodes, and it does not have 'Named' rights to its
nickname.
So for example, if (i) there are five nodes named Bob in the network, (ii) I
am running one of them but am flagged as 'Unnamed' because someone else
claimed the 'Bob' nickname first, and (iii) I run my Tor as both client
and exit the following can happen to me:
- I go to www.evil.com
- I click on a link www.evil.com.bob.exit
- My request will exit through my own Tor node rather than the 'Named'
node Bob or any of the others.
- www.evil.com now knows I am actually browsing from the same computer
that is running my 'Bob' node
So to solve both issues we need to ensure:
- When fulfilling a .exit request we only choose a routerinfo if it exists in
the routerlist, even when that routerinfo is ours.
- When getting a router by nickname we only return our own router information
if it is not going to be used for building a circuit.
We ensure this by removing the special treatment afforded our own router in
router_get_by_nickname(). This means the function will only return the
routerinfo of our own router if it is in the routerlist built from authority
info and has a unique nickname or is bound to a non-unique nickname.
There are some uses of router_get_by_nickname() where we are looking for the
router by name because of a configuration directive, specifically local
declaration of NodeFamilies and EntryNodes and other routers' declaration of
MyFamily. In these cases it is not at first clear if we need to continue
returning our own routerinfo even if our router is not listed and/or has a
non-unique nickname with the Unnamed flag.
The patch treats each of these cases as follows:
Other Routers' Declaration of MyFamily
This happens in routerlist_add_family(). If another router declares our router
in its family and our router has the Unnamed flag or is not in the routerlist
yet, should we take advantage of the fact that we know our own routerinfo to
add us in anyway? This patch says 'no, treat our own router just like any
other'. This is a safe choice because it ensures our client has the same view
of the network as other clients. We also have no good way of knowing if our
router is Named or not independently of the authorities, so we have to rely on
them in this.
Local declaration of NodeFamilies
Again, we have no way of knowing if the declaration 'NodeFamilies
Bob,Alice,Ringo' refers to our router Bob or the Named router Bob, so we have
to defer to the authorities and treat our own router like any other.
Local declaration of NodeFamilies
Again, same as above. There's also no good reason we would want our client to
choose it's own router as an entry guard if it does not meet the requirements
expected of any other router on the network.
In order to reduce the possibility of error, the patch also replaces two
instances where we were using router_get_by_nickname() with calls to
router_get_by_hexdigest() where the identity digest of the router
is available.
| Robert Hogan | 2010-10-13 |
* | | | Merge remote branch 'sebastian/relay_early_rend' into maint-0.2.2 | Nick Mathewson | 2010-10-21 |
|\ \ \ |
|
| * | | | Send relay_early cells in rend circs•••There are no relay left that run version 0.2.1.3 through 0.2.1.18, so
changing this behaviour should be safe now.
| Sebastian Hahn | 2010-10-18 |
| | |/
| |/| |
|
* | | | Fix a logic error in 98aee84. Found by boboper | Nick Mathewson | 2010-10-20 |
* | | | Add a ! to directory_caches_dir_info() to fix a logic error•••We want to fetch directory info more aggressively if we need it to
refuseunknownexits. Thus, we'll want it if our exit policy is _NOT_
reject *.
| Nick Mathewson | 2010-10-20 |
* | | | Fix a read of a freed pointer while in set_current_consensus•••Found by rransom while working on issue #988. Bugfix on
0.2.2.17-alpha. Fixes bug 2097.
| Nick Mathewson | 2010-10-20 |
|/ / |
|
* | | fix comment | Roger Dingledine | 2010-10-01 |
* | | log when we guess our ip address, not just when we fail | Roger Dingledine | 2010-10-01 |
* | | Note an XXX about potential overflow | Sebastian Hahn | 2010-09-30 |
* | | Use an upper and lower bound for bridge weights•••When picking bridges (or other nodes without a consensus entry (and
thus no bandwidth weights)) we shouldn't just trust the node's
descriptor. So far we believed anything between 0 and 10MB/s, where 0
would mean that a node doesn't get any use from use unless it is our
only one, and 10MB/s would be a quite siginficant weight. To make this
situation better, we now believe weights in the range from 20kB/s to
100kB/s. This should allow new bridges to get use more quickly, and
means that it will be harder for bridges to see almost all our traffic.
| Sebastian Hahn | 2010-09-30 |
* | | Merge commit 'mikeperry/bug1772' into maint-0.2.2 | Roger Dingledine | 2010-09-30 |
|\ \ |
|
| * | | Nominaly lower the minimum timeout value to 1500.•••This won't change any behavior, since it will still be rounded back
up to 2seconds, but should reduce the chances of some extra warns.
| Mike Perry | 2010-09-29 |
* | | | Merge branch 'bug1772' into maint-0.2.2 | Roger Dingledine | 2010-09-29 |
|\ \ \ |
|
| * | | | fix two casts | Roger Dingledine | 2010-09-29 |
| |/ / |
|
| * | | Comment network liveness and change detection behavior. | Mike Perry | 2010-09-29 |
| * | | no measurement circs if not enough build times•••In the first 100 circuits, our timeout_ms and close_ms
are the same. So we shouldn't transition circuits to purpose
CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT, since they will just timeout again
next time we check.
| Roger Dingledine | 2010-09-29 |
| * | | refactor and recomment; no actual changes | Roger Dingledine | 2010-09-29 |
| * | | Cap the circuit build timeout to the max time we've seen.•••Also, cap the measurement timeout to 2X the max we've seen.
| Mike Perry | 2010-09-29 |
| * | | Do away with the complexity of the network liveness detection.•••We really should ignore any timeouts that have *no* network activity for their
entire measured lifetime, now that we have the 95th percentile measurement
changes. Usually this is up to a minute, even on fast connections.
| Mike Perry | 2010-09-29 |
| * | | Fix state checks on liveness handling.•••If we really want all this complexity for these stages here, we need to handle
it better for people with large timeouts. It should probably go away, though.
| Mike Perry | 2010-09-29 |
| * | | Fix non-live condition checks.•••Rechecking the timeout condition was foolish, because it is checked on the
same codepath. It was also wrong, because we didn't round.
Also, the liveness check itself should be <, and not <=, because we only have
1 second resolution.
| Mike Perry | 2010-09-29 |
* | | | Merge commit 'mikeperry/bug1739' into maint-0.2.2 | Roger Dingledine | 2010-09-29 |
|\| | |
|
| * | | Send control port events for timeouts.•••We now differentiate between timeouts and cutoffs by the REASON string and
the PURPOSE string.
| Mike Perry | 2010-09-29 |
* | | | Merge commit 'mikeperry/bug1740' into maint-0.2.2 | Roger Dingledine | 2010-09-29 |
|\| | |
|
| * | | Only count timeout data for 3 hop circuits.•••Use 4/3 of this timeout value for 4 hop circuits, and use half of it for
canabalized circuits.
| Mike Perry | 2010-09-29 |
| |/ |
|
* | | even more comment | Roger Dingledine | 2010-09-28 |
* | | improve code comments, based on comments from nick | Roger Dingledine | 2010-09-28 |
* | | handle ugly edge case in retrying entrynodes•••Specifically, a circ attempt that we'd launched while the network was
down could timeout after we've marked our entrynodes up, marking them
back down again. The fix is to annotate as bad the OR conns that were
around before we did the retry, so if a circuit that's attached to them
times out we don't do anything about it.
| Roger Dingledine | 2010-09-28 |
* | | Actually notice when our last entrynode goes down•••Otherwise we'd never set have_minimum_dir_info to false, so the
"optimistic retry" would never trigger.
| Roger Dingledine | 2010-09-28 |
* | | optimistically retry EntryNodes on socks request•••We used to mark all our known bridges up when they're all down and we
get a new socks request. Now do that when we've set EntryNodes too.
| Roger Dingledine | 2010-09-28 |
* | | remove a redundant assert | Roger Dingledine | 2010-09-28 |
* | | refactor; no actual changes | Roger Dingledine | 2010-09-28 |
* | | Merge branch 'maint-0.2.1' into maint-0.2.2 | Roger Dingledine | 2010-09-28 |
|\ \ |
|
| * | | actually retry bridges when your network goes away | Roger Dingledine | 2010-09-28 |
* | | | a dir-spec entry for refuseunknownexits•••plus quiet a log line
| Roger Dingledine | 2010-09-27 |
* | | | changelog entry for bug1751 | Roger Dingledine | 2010-09-27 |
* | | | Merge remote branch 'sebastian/bug1964' into maint-0.2.2 | Nick Mathewson | 2010-09-27 |
|\ \ \ |
|