diff options
author | Nick Mathewson <nickm@torproject.org> | 2011-07-20 10:38:00 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2011-07-20 14:14:21 -0400 |
commit | 6e923ed8cdbdcf45902cb64dd921d63dea310d1d (patch) | |
tree | 2f7637d581eb2633547389eb43d3a467ca588074 /src/or/circuituse.c | |
parent | 9b0d3719ae3d1e9416cffcce1267fdacfcf765e9 (diff) | |
download | tor-6e923ed8cdbdcf45902cb64dd921d63dea310d1d.tar.gz tor-6e923ed8cdbdcf45902cb64dd921d63dea310d1d.zip |
Add an OptimisticData option to control client-side optimistic data
Diffstat (limited to 'src/or/circuituse.c')
-rw-r--r-- | src/or/circuituse.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 1bc518b7d4..9fbe5fed65 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -18,6 +18,7 @@ #include "connection_edge.h" #include "control.h" #include "nodelist.h" +#include "networkstatus.h" #include "policies.h" #include "rendclient.h" #include "rendcommon.h" @@ -1541,6 +1542,19 @@ cpath_is_on_circuit(origin_circuit_t *circ, crypt_path_t *crypt_path) return 0; } +/** Return true iff client-side optimistic data is supported. */ +static int +optimistic_data_enabled(void) +{ + const or_options_t *options = get_options(); + if (options->OptimisticData < 0) { + const int32_t enabled = + networkstatus_get_param(NULL, "UseOptimisticData", 0, 0, 1); + return (int)enabled; + } + return options->OptimisticData; +} + /** Attach the AP stream <b>apconn</b> to circ's linked list of * p_streams. Also set apconn's cpath_layer to <b>cpath</b>, or to the last * hop in circ's cpath if <b>cpath</b> is NULL. @@ -1580,7 +1594,8 @@ link_apconn_to_circ(edge_connection_t *apconn, origin_circuit_t *circ, 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 && + if (optimistic_data_enabled() && + circ->_base.purpose == CIRCUIT_PURPOSE_C_GENERAL && exitnode->rs->version_supports_optimistic_data) apconn->exit_allows_optimistic_data = 1; else |