mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
clients use optimistic data when reaching hidden services
Allow clients to use optimistic data when connecting to a hidden service, which should cut out the initial round-trip for client-side programs including Tor Browser. (Now that Tor 0.2.2.x is obsolete, all hidden services should support server-side optimistic data.) See proposal 181 for details. Implements ticket 13211.
This commit is contained in:
parent
530fac10aa
commit
09183dc315
6
changes/feature13211
Normal file
6
changes/feature13211
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
o Major features (performance):
|
||||||
|
- Allow clients to use optimistic data when connecting to a hidden
|
||||||
|
service, which should cut out the initial round-trip for client-side
|
||||||
|
programs including Tor Browser. (Now that Tor 0.2.2.x is obsolete,
|
||||||
|
all hidden services should support server-side optimistic
|
||||||
|
data.) See proposal 181 for details. Implements ticket 13211.
|
@ -2110,14 +2110,17 @@ link_apconn_to_circ(entry_connection_t *apconn, origin_circuit_t *circ,
|
|||||||
|
|
||||||
/* See if we can use optimistic data on this circuit */
|
/* See if we can use optimistic data on this circuit */
|
||||||
if (optimistic_data_enabled() &&
|
if (optimistic_data_enabled() &&
|
||||||
circ->base_.purpose == CIRCUIT_PURPOSE_C_GENERAL)
|
(circ->base_.purpose == CIRCUIT_PURPOSE_C_GENERAL ||
|
||||||
|
circ->base_.purpose == CIRCUIT_PURPOSE_C_REND_JOINED))
|
||||||
apconn->may_use_optimistic_data = 1;
|
apconn->may_use_optimistic_data = 1;
|
||||||
else
|
else
|
||||||
apconn->may_use_optimistic_data = 0;
|
apconn->may_use_optimistic_data = 0;
|
||||||
log_info(LD_APP, "Looks like completed circuit to %s %s allow "
|
log_info(LD_APP, "Looks like completed circuit to %s %s allow "
|
||||||
"optimistic data for connection to %s",
|
"optimistic data for connection to %s",
|
||||||
/* node_describe() does the right thing if exitnode is NULL */
|
circ->base_.purpose == CIRCUIT_PURPOSE_C_GENERAL ?
|
||||||
safe_str_client(node_describe(exitnode)),
|
/* node_describe() does the right thing if exitnode is NULL */
|
||||||
|
safe_str_client(node_describe(exitnode)) :
|
||||||
|
"hidden service",
|
||||||
apconn->may_use_optimistic_data ? "does" : "doesn't",
|
apconn->may_use_optimistic_data ? "does" : "doesn't",
|
||||||
safe_str_client(apconn->socks_request->address));
|
safe_str_client(apconn->socks_request->address));
|
||||||
}
|
}
|
||||||
|
@ -1767,7 +1767,8 @@ connection_ap_supports_optimistic_data(const entry_connection_t *conn)
|
|||||||
general circuit. */
|
general circuit. */
|
||||||
if (edge_conn->on_circuit == NULL ||
|
if (edge_conn->on_circuit == NULL ||
|
||||||
edge_conn->on_circuit->state != CIRCUIT_STATE_OPEN ||
|
edge_conn->on_circuit->state != CIRCUIT_STATE_OPEN ||
|
||||||
edge_conn->on_circuit->purpose != CIRCUIT_PURPOSE_C_GENERAL)
|
(edge_conn->on_circuit->purpose != CIRCUIT_PURPOSE_C_GENERAL &&
|
||||||
|
edge_conn->on_circuit->purpose != CIRCUIT_PURPOSE_C_REND_JOINED))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return conn->may_use_optimistic_data;
|
return conn->may_use_optimistic_data;
|
||||||
|
Loading…
Reference in New Issue
Block a user