ソースを参照

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
Roger Dingledine 21 年 前
コミット
9a33b59ece
4 ファイル変更2 行追加72 行削除
  1. 0 10
      src/or/circuit.c
  2. 1 2
      src/or/command.c
  3. 1 49
      src/or/onion.c
  4. 0 11
      src/or/or.h

+ 0 - 10
src/or/circuit.c

@@ -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);
 }
 

+ 1 - 2
src/or/command.c

@@ -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
src/or/onion.c

@@ -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 */

+ 0 - 11
src/or/or.h

@@ -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);