mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
read the "circwindow" parameter from the consensus
backport ofc43859c5c1
backport of0d13e0ed14
This commit is contained in:
parent
83c3f118db
commit
2394336426
@ -10,6 +10,11 @@ Changes in version 0.2.1.20 - 2009-??-??
|
|||||||
contains more than one signature from the same voter. Bugfix on
|
contains more than one signature from the same voter. Bugfix on
|
||||||
0.2.0.3-alpha.
|
0.2.0.3-alpha.
|
||||||
|
|
||||||
|
o Major features:
|
||||||
|
- Tor now reads the "circwindow" parameter out of the consensus,
|
||||||
|
and uses that value for its circuit package window rather than the
|
||||||
|
default of 1000 cells. Begins the implementation of proposal 168.
|
||||||
|
|
||||||
o New directory authorities:
|
o New directory authorities:
|
||||||
- Set up urras (run by Jacob Appelbaum) as the seventh v3 directory
|
- Set up urras (run by Jacob Appelbaum) as the seventh v3 directory
|
||||||
authority.
|
authority.
|
||||||
|
@ -1829,7 +1829,7 @@ onion_append_hop(crypt_path_t **head_ptr, extend_info_t *choice)
|
|||||||
|
|
||||||
hop->extend_info = extend_info_dup(choice);
|
hop->extend_info = extend_info_dup(choice);
|
||||||
|
|
||||||
hop->package_window = CIRCWINDOW_START;
|
hop->package_window = circuit_initial_package_window();
|
||||||
hop->deliver_window = CIRCWINDOW_START;
|
hop->deliver_window = CIRCWINDOW_START;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -361,6 +361,19 @@ circuit_purpose_to_controller_string(uint8_t purpose)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Pick a reasonable package_window to start out for our circuits.
|
||||||
|
* Originally this was hard-coded at 1000, but now the consensus votes
|
||||||
|
* on the answer. See proposal 168. */
|
||||||
|
int32_t
|
||||||
|
circuit_initial_package_window(void)
|
||||||
|
{
|
||||||
|
int32_t num = networkstatus_get_param(NULL, "circwindow", CIRCWINDOW_START);
|
||||||
|
/* If the consensus tells us a negative number, we'd assert. */
|
||||||
|
if (num < 0)
|
||||||
|
num = CIRCWINDOW_START;
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
|
||||||
/** Initialize the common elements in a circuit_t, and add it to the global
|
/** Initialize the common elements in a circuit_t, and add it to the global
|
||||||
* list. */
|
* list. */
|
||||||
static void
|
static void
|
||||||
@ -368,7 +381,7 @@ init_circuit_base(circuit_t *circ)
|
|||||||
{
|
{
|
||||||
circ->timestamp_created = time(NULL);
|
circ->timestamp_created = time(NULL);
|
||||||
|
|
||||||
circ->package_window = CIRCWINDOW_START;
|
circ->package_window = circuit_initial_package_window();
|
||||||
circ->deliver_window = CIRCWINDOW_START;
|
circ->deliver_window = CIRCWINDOW_START;
|
||||||
|
|
||||||
circuit_add(circ);
|
circuit_add(circ);
|
||||||
|
@ -1889,14 +1889,18 @@ networkstatus_dump_bridge_status_to_file(time_t now)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Return the value of a integer parameter from the networkstatus <b>ns</b>
|
/** Return the value of a integer parameter from the networkstatus <b>ns</b>
|
||||||
* whose name is <b>param_name</b>. Return <b>default_val</b> if ns is NULL,
|
* whose name is <b>param_name</b>. If <b>ns</b> is NULL, try loading the
|
||||||
* or if it has no parameter called <b>param_name</b>. */
|
* latest consensus ourselves. Return <b>default_val</b> if no latest
|
||||||
|
* consensus, or if it has no parameter called <b>param_name</b>. */
|
||||||
int32_t
|
int32_t
|
||||||
networkstatus_get_param(networkstatus_t *ns, const char *param_name,
|
networkstatus_get_param(networkstatus_t *ns, const char *param_name,
|
||||||
int32_t default_val)
|
int32_t default_val)
|
||||||
{
|
{
|
||||||
size_t name_len;
|
size_t name_len;
|
||||||
|
|
||||||
|
if (!ns) /* if they pass in null, go find it ourselves */
|
||||||
|
ns = networkstatus_get_latest_consensus();
|
||||||
|
|
||||||
if (!ns || !ns->net_params)
|
if (!ns || !ns->net_params)
|
||||||
return default_val;
|
return default_val;
|
||||||
|
|
||||||
|
@ -1853,9 +1853,9 @@ typedef struct crypt_path_t {
|
|||||||
struct crypt_path_t *prev; /**< Link to previous crypt_path_t in the
|
struct crypt_path_t *prev; /**< Link to previous crypt_path_t in the
|
||||||
* circuit. */
|
* circuit. */
|
||||||
|
|
||||||
int package_window; /**< How many bytes are we allowed to originate ending
|
int package_window; /**< How many cells are we allowed to originate ending
|
||||||
* at this step? */
|
* at this step? */
|
||||||
int deliver_window; /**< How many bytes are we willing to deliver originating
|
int deliver_window; /**< How many cells are we willing to deliver originating
|
||||||
* at this step? */
|
* at this step? */
|
||||||
} crypt_path_t;
|
} crypt_path_t;
|
||||||
|
|
||||||
@ -2789,6 +2789,7 @@ void circuit_set_n_circid_orconn(circuit_t *circ, circid_t id,
|
|||||||
or_connection_t *conn);
|
or_connection_t *conn);
|
||||||
void circuit_set_state(circuit_t *circ, uint8_t state);
|
void circuit_set_state(circuit_t *circ, uint8_t state);
|
||||||
void circuit_close_all_marked(void);
|
void circuit_close_all_marked(void);
|
||||||
|
int32_t circuit_initial_package_window(void);
|
||||||
origin_circuit_t *origin_circuit_new(void);
|
origin_circuit_t *origin_circuit_new(void);
|
||||||
or_circuit_t *or_circuit_new(circid_t p_circ_id, or_connection_t *p_conn);
|
or_circuit_t *or_circuit_new(circid_t p_circ_id, or_connection_t *p_conn);
|
||||||
circuit_t *circuit_get_by_circid_orconn(circid_t circ_id,
|
circuit_t *circuit_get_by_circid_orconn(circid_t circ_id,
|
||||||
|
@ -703,7 +703,7 @@ rend_client_receive_rendezvous(origin_circuit_t *circ, const char *request,
|
|||||||
/* set the windows to default. these are the windows
|
/* set the windows to default. these are the windows
|
||||||
* that alice thinks bob has.
|
* that alice thinks bob has.
|
||||||
*/
|
*/
|
||||||
hop->package_window = CIRCWINDOW_START;
|
hop->package_window = circuit_initial_package_window();
|
||||||
hop->deliver_window = CIRCWINDOW_START;
|
hop->deliver_window = CIRCWINDOW_START;
|
||||||
|
|
||||||
onion_append_to_cpath(&circ->cpath, hop);
|
onion_append_to_cpath(&circ->cpath, hop);
|
||||||
|
@ -1556,7 +1556,7 @@ rend_service_rendezvous_has_opened(origin_circuit_t *circuit)
|
|||||||
/* set the windows to default. these are the windows
|
/* set the windows to default. these are the windows
|
||||||
* that bob thinks alice has.
|
* that bob thinks alice has.
|
||||||
*/
|
*/
|
||||||
hop->package_window = CIRCWINDOW_START;
|
hop->package_window = circuit_initial_package_window();
|
||||||
hop->deliver_window = CIRCWINDOW_START;
|
hop->deliver_window = CIRCWINDOW_START;
|
||||||
|
|
||||||
onion_append_to_cpath(&circuit->cpath, hop);
|
onion_append_to_cpath(&circuit->cpath, hop);
|
||||||
|
Loading…
Reference in New Issue
Block a user