mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
clean up and refactor some more
svn:r3798
This commit is contained in:
+20
-3
@@ -246,7 +246,7 @@ again:
|
||||
return 0; /* if r == 1 */
|
||||
}
|
||||
|
||||
/** Create and return new circuit. Initialize its purpose and
|
||||
/** Create and return a new circuit. Initialize its purpose and
|
||||
* build-state based on our arguments. */
|
||||
circuit_t *
|
||||
circuit_init(uint8_t purpose, int need_uptime, int need_capacity, int internal) {
|
||||
@@ -1168,8 +1168,9 @@ onion_pick_cpath_exit(circuit_t *circ, routerinfo_t *exit) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Take the open circ originating here, give it a new exit destination
|
||||
* to <b>exit</b>, and get it to send the next extend cell.
|
||||
/** Give <b>circ</b> a new exit destination to <b>exit</b>, and add a
|
||||
* hop to the cpath reflecting this. Don't send the next extend cell --
|
||||
* the caller will do this if it wants to.
|
||||
*/
|
||||
int
|
||||
circuit_append_new_exit(circuit_t *circ, routerinfo_t *exit) {
|
||||
@@ -1183,6 +1184,22 @@ circuit_append_new_exit(circuit_t *circ, routerinfo_t *exit) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Take the open circ originating here, give it a new exit destination
|
||||
* to <b>exit</b>, and get it to send the next extend cell. If you can't
|
||||
* send the extend cell, mark the circuit for close and return -1, else
|
||||
* return 0. */
|
||||
int circuit_extend_to_new_exit(circuit_t *circ, routerinfo_t *exit) {
|
||||
circuit_append_new_exit(circ, exit);
|
||||
circ->state = CIRCUIT_STATE_BUILDING;
|
||||
if (circuit_send_next_onion_skin(circ)<0) {
|
||||
log_fn(LOG_WARN, "Couldn't extend circuit to new point '%s'.",
|
||||
circ->build_state->chosen_exit_name);
|
||||
circuit_mark_for_close(circ);
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Return the number of routers in <b>routers</b> that are currently up
|
||||
* and available for building circuits through.
|
||||
*/
|
||||
|
||||
@@ -77,7 +77,7 @@ void circuit_close_all_marked(void)
|
||||
circuit_t *circuit_new(uint16_t p_circ_id, connection_t *p_conn) {
|
||||
circuit_t *circ;
|
||||
static uint32_t n_circuits_allocated = 1;
|
||||
/* never zero, since a global ID of 0 treated specially by the controller */
|
||||
/* never zero, since a global ID of 0 is treated specially by the controller */
|
||||
|
||||
circ = tor_malloc_zero(sizeof(circuit_t));
|
||||
circ->magic = CIRCUIT_MAGIC;
|
||||
|
||||
+1
-7
@@ -722,14 +722,8 @@ circuit_launch_by_router(uint8_t purpose, routerinfo_t *exit,
|
||||
case CIRCUIT_PURPOSE_S_CONNECT_REND:
|
||||
/* need to add a new hop */
|
||||
tor_assert(exit);
|
||||
circuit_append_new_exit(circ, exit);
|
||||
circ->state = CIRCUIT_STATE_BUILDING;
|
||||
if (circuit_send_next_onion_skin(circ)<0) {
|
||||
log_fn(LOG_WARN, "Couldn't extend circuit to new point '%s'.",
|
||||
circ->build_state->chosen_exit_name);
|
||||
circuit_mark_for_close(circ);
|
||||
if (circuit_extend_to_new_exit(circ, exit) < 0)
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
log_fn(LOG_WARN,"Bug: unexpected purpose %d when cannibalizing a general circ.",
|
||||
|
||||
@@ -1137,6 +1137,7 @@ int circuit_all_predicted_ports_handled(time_t now, int *need_uptime,
|
||||
int *need_capacity);
|
||||
|
||||
int circuit_append_new_exit(circuit_t *circ, routerinfo_t *exit);
|
||||
int circuit_extend_to_new_exit(circuit_t *circ, routerinfo_t *exit);
|
||||
void onion_append_to_cpath(crypt_path_t **head_ptr, crypt_path_t *new_hop);
|
||||
|
||||
/********************************* circuitlist.c ***********************/
|
||||
|
||||
+1
-8
@@ -226,14 +226,7 @@ rend_client_introduction_acked(circuit_t *circ,
|
||||
log_fn(LOG_INFO, "Chose new intro point %s for %s (circ %d)",
|
||||
nickname, circ->rend_query, circ->n_circ_id);
|
||||
tor_free(nickname);
|
||||
circuit_append_new_exit(circ, r);
|
||||
circ->state = CIRCUIT_STATE_BUILDING;
|
||||
if (circuit_send_next_onion_skin(circ)<0) {
|
||||
log_fn(LOG_WARN, "Couldn't extend circuit to new point '%s'.",
|
||||
circ->build_state->chosen_exit_name);
|
||||
circuit_mark_for_close(circ);
|
||||
return -1;
|
||||
}
|
||||
return circuit_extend_to_new_exit(circ, r);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user