mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
Read "circwindow=x" from the consensus and use it
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.
This commit is contained in:
parent
40bcab1faf
commit
c43859c5c1
@ -3,6 +3,9 @@ Changes in version 0.2.2.2-alpha - 2009-09-??
|
|||||||
- Authorities can now vote on arbitary integer values as part of the
|
- Authorities can now vote on arbitary integer values as part of the
|
||||||
consensus process. This is designed to help set network parameters.
|
consensus process. This is designed to help set network parameters.
|
||||||
Implements proposal 167.
|
Implements proposal 167.
|
||||||
|
- 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 Minor bugfixes:
|
o Minor bugfixes:
|
||||||
- Fix an extremely rare infinite recursion bug that could occur if
|
- Fix an extremely rare infinite recursion bug that could occur if
|
||||||
|
@ -1833,7 +1833,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,18 @@ 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)
|
||||||
|
{
|
||||||
|
networkstatus_t *consensus = networkstatus_get_latest_consensus();
|
||||||
|
if (consensus)
|
||||||
|
return networkstatus_get_param(consensus, "circwindow", CIRCWINDOW_START);
|
||||||
|
return CIRCWINDOW_START;
|
||||||
|
}
|
||||||
|
|
||||||
/** 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 +380,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);
|
||||||
|
@ -1870,9 +1870,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;
|
||||||
|
|
||||||
@ -2864,6 +2864,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,
|
||||||
|
@ -644,7 +644,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);
|
||||||
|
@ -1477,7 +1477,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