[tor-commits] [tor/master] Merge branch 'optimistic-client'
nickm at torproject.org
nickm at torproject.org
Wed Jul 20 13:51:20 UTC 2011
commit eaa1c05397c1a6cf2f58b7c41e388311d5aa8ffb
Merge: 195bcb6 9a7c16f
Author: Nick Mathewson <nickm at torproject.org>
Date: Wed Jul 20 09:50:53 2011 -0400
Merge branch 'optimistic-client'
The conflicts are with the proposal 171 circuit isolation code, and
they're all trivial: they're just a matter of both branches adding
some unrelated code in the same places.
Conflicts:
src/or/circuituse.c
src/or/connection.c
src/or/buffers.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++
src/or/buffers.h | 19 ++++++++++++
src/or/circuituse.c | 21 ++++++++++++++
src/or/connection.c | 6 ++++
src/or/connection_edge.c | 52 +++++++++++++++++++++++++++++++++-
src/or/or.h | 22 ++++++++++++++
src/or/relay.c | 44 +++++++++++++++++++++++++++-
src/or/routerparse.c | 3 ++
src/test/test.c | 66 +++++++++++++++++++++++++++++++++++++++++++
9 files changed, 300 insertions(+), 3 deletions(-)
diff --cc src/or/circuituse.c
index b486044,3c8cacb..1bc518b
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@@ -1568,8 -1472,23 +1571,26 @@@ link_apconn_to_circ(edge_connection_t *
apconn->cpath_layer = circ->cpath->prev;
}
+ circ->isolation_any_streams_attached = 1;
+ connection_edge_update_circuit_isolation(apconn, circ, 0);
++
+ /* See if we can use optimistic data on this circuit */
+ if (apconn->cpath_layer->extend_info &&
+ (exitnode = node_get_by_id(
+ apconn->cpath_layer->extend_info->identity_digest)) &&
+ exitnode->rs) {
+ /* Okay; we know what exit node this is. */
+ if (circ->_base.purpose == CIRCUIT_PURPOSE_C_GENERAL &&
+ exitnode->rs->version_supports_optimistic_data)
+ apconn->exit_allows_optimistic_data = 1;
+ else
+ apconn->exit_allows_optimistic_data = 0;
+ log_info(LD_APP, "Looks like completed circuit to %s %s allow "
+ "optimistic data for connection to %s",
+ safe_str_client(node_describe(exitnode)),
+ apconn->exit_allows_optimistic_data ? "does" : "doesn't",
+ safe_str_client(apconn->socks_request->address));
+ }
}
/** Return true iff <b>address</b> is matched by one of the entries in
diff --cc src/or/connection.c
index 59a7b80,1ccd2b6..3950f90
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@@ -467,9 -442,14 +467,15 @@@ _connection_free(connection_t *conn
if (CONN_IS_EDGE(conn)) {
edge_connection_t *edge_conn = TO_EDGE_CONN(conn);
tor_free(edge_conn->chosen_exit_name);
+ tor_free(edge_conn->original_dest_address);
if (edge_conn->socks_request)
socks_request_free(edge_conn->socks_request);
+ if (edge_conn->pending_optimistic_data) {
+ generic_buffer_free(edge_conn->pending_optimistic_data);
+ }
+ if (edge_conn->sending_optimistic_data) {
+ generic_buffer_free(edge_conn->sending_optimistic_data);
+ }
rend_data_free(edge_conn->rend_data);
}
if (conn->type == CONN_TYPE_CONTROL) {
More information about the tor-commits
mailing list