mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
relay queues are obsolete (woo!)
they used to be used for * queueing relay cells at the edge of the network, when windows are empty * queueing relay cells that arrive after an onion but before the onion has been processed. both of these uses are gone. so out they go. svn:r315
This commit is contained in:
@@ -78,21 +78,11 @@ circuit_t *circuit_new(aci_t p_aci, connection_t *p_conn) {
|
||||
}
|
||||
|
||||
void circuit_free(circuit_t *circ) {
|
||||
struct relay_queue_t *tmpd;
|
||||
|
||||
if (circ->n_crypto)
|
||||
crypto_free_cipher_env(circ->n_crypto);
|
||||
if (circ->p_crypto)
|
||||
crypto_free_cipher_env(circ->p_crypto);
|
||||
|
||||
circuit_free_cpath(circ->cpath);
|
||||
while(circ->relay_queue) {
|
||||
tmpd = circ->relay_queue;
|
||||
circ->relay_queue = tmpd->next;
|
||||
free(tmpd->cell);
|
||||
free(tmpd);
|
||||
}
|
||||
|
||||
free(circ);
|
||||
}
|
||||
|
||||
|
||||
@@ -167,8 +167,7 @@ void command_process_relay_cell(cell_t *cell, connection_t *conn) {
|
||||
}
|
||||
|
||||
if(circ->state == CIRCUIT_STATE_ONIONSKIN_PENDING) {
|
||||
log(LOG_DEBUG,"command_process_relay_cell(): circuit in create_wait. Queueing relay cell.");
|
||||
onion_pending_relay_add(circ, cell);
|
||||
log(LOG_DEBUG,"command_process_relay_cell(): circuit in create_wait. Dropping.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
+1
-49
@@ -67,7 +67,6 @@ int onion_pending_check(void) {
|
||||
}
|
||||
|
||||
void onion_pending_process_one(void) {
|
||||
struct relay_queue_t *tmpd;
|
||||
circuit_t *circ;
|
||||
|
||||
if(!ol_list)
|
||||
@@ -88,11 +87,7 @@ void onion_pending_process_one(void) {
|
||||
onion_pending_remove(circ);
|
||||
circuit_close(circ);
|
||||
} else {
|
||||
log(LOG_DEBUG,"onion_pending_process_one(): Succeeded. Delivering queued relay cells.");
|
||||
for(tmpd = ol_list->relay_cells; tmpd; tmpd=tmpd->next) {
|
||||
log(LOG_DEBUG,"onion_pending_process_one(): Delivering relay cell...");
|
||||
command_process_relay_cell(tmpd->cell, circ->p_conn);
|
||||
}
|
||||
log(LOG_DEBUG,"onion_pending_process_one(): Succeeded.");
|
||||
onion_pending_remove(circ);
|
||||
}
|
||||
return;
|
||||
@@ -103,7 +98,6 @@ void onion_pending_process_one(void) {
|
||||
*/
|
||||
void onion_pending_remove(circuit_t *circ) {
|
||||
struct onion_queue_t *tmpo, *victim;
|
||||
struct relay_queue_t *tmpd;
|
||||
|
||||
if(!ol_list)
|
||||
return; /* nothing here. */
|
||||
@@ -133,49 +127,7 @@ void onion_pending_remove(circuit_t *circ) {
|
||||
|
||||
/* now victim points to the element that needs to be removed */
|
||||
|
||||
/* first dump the attached relay cells too, if any */
|
||||
while(victim->relay_cells) {
|
||||
tmpd = victim->relay_cells;
|
||||
victim->relay_cells = tmpd->next;
|
||||
free(tmpd->cell);
|
||||
free(tmpd);
|
||||
}
|
||||
|
||||
free(victim);
|
||||
|
||||
}
|
||||
|
||||
struct relay_queue_t *relay_queue_add(struct relay_queue_t *list, cell_t *cell, crypt_path_t *layer_hint) {
|
||||
struct relay_queue_t *tmpd, *newd;
|
||||
|
||||
newd = tor_malloc(sizeof(struct relay_queue_t));
|
||||
memset(newd, 0, sizeof(struct relay_queue_t));
|
||||
newd->cell = tor_malloc(sizeof(cell_t));
|
||||
memcpy(newd->cell, cell, sizeof(cell_t));
|
||||
newd->layer_hint = layer_hint;
|
||||
|
||||
if(!list) {
|
||||
return newd;
|
||||
}
|
||||
for(tmpd = list; tmpd->next; tmpd=tmpd->next) ;
|
||||
/* now tmpd->next is null */
|
||||
tmpd->next = newd;
|
||||
return list;
|
||||
}
|
||||
|
||||
/* a relay cell has arrived for a circuit which is still pending. Find
|
||||
* the right entry in ol_list, and add it to the end of the 'relay_cells'
|
||||
* list.
|
||||
*/
|
||||
void onion_pending_relay_add(circuit_t *circ, cell_t *cell) {
|
||||
struct onion_queue_t *tmpo;
|
||||
|
||||
for(tmpo=ol_list; tmpo; tmpo=tmpo->next) {
|
||||
if(tmpo->circ == circ) {
|
||||
tmpo->relay_cells = relay_queue_add(tmpo->relay_cells, cell, NULL);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* learn keys, initialize, then send a created cell back */
|
||||
|
||||
@@ -352,12 +352,6 @@ struct crypt_path_t {
|
||||
|
||||
typedef struct crypt_path_t crypt_path_t;
|
||||
|
||||
struct relay_queue_t {
|
||||
cell_t *cell;
|
||||
crypt_path_t *layer_hint;
|
||||
struct relay_queue_t *next;
|
||||
};
|
||||
|
||||
/* struct for a path (circuit) through the network */
|
||||
typedef struct {
|
||||
uint32_t n_addr;
|
||||
@@ -372,8 +366,6 @@ typedef struct {
|
||||
aci_t p_aci; /* connection identifiers */
|
||||
aci_t n_aci;
|
||||
|
||||
struct relay_queue_t *relay_queue; /* for queueing cells at the edges */
|
||||
|
||||
crypto_cipher_env_t *p_crypto; /* used only for intermediate hops */
|
||||
crypto_cipher_env_t *n_crypto;
|
||||
|
||||
@@ -394,7 +386,6 @@ typedef struct {
|
||||
|
||||
struct onion_queue_t {
|
||||
circuit_t *circ;
|
||||
struct relay_queue_t *relay_cells;
|
||||
struct onion_queue_t *next;
|
||||
};
|
||||
|
||||
@@ -749,8 +740,6 @@ int onion_pending_add(circuit_t *circ);
|
||||
int onion_pending_check(void);
|
||||
void onion_pending_process_one(void);
|
||||
void onion_pending_remove(circuit_t *circ);
|
||||
struct relay_queue_t *relay_queue_add(struct relay_queue_t *list, cell_t *cell, crypt_path_t *layer_hint);
|
||||
void onion_pending_relay_add(circuit_t *circ, cell_t *cell);
|
||||
|
||||
/* uses a weighted coin with weight cw to choose a route length */
|
||||
int chooselen(double cw);
|
||||
|
||||
Reference in New Issue
Block a user