Browse Source

bugfix: a circ can't be youngest if it's still connecting to the first hop

svn:r255
Roger Dingledine 22 years ago
parent
commit
59e70bcae6
2 changed files with 6 additions and 6 deletions
  1. 6 5
      src/or/circuit.c
  2. 0 1
      src/or/command.c

+ 6 - 5
src/or/circuit.c

@@ -255,15 +255,16 @@ circuit_t *circuit_get_newest_by_edge_type(char edge_type) {
 
   for(circ=global_circuitlist;circ;circ = circ->next) {
     if(edge_type == EDGE_AP && (!circ->p_conn || circ->p_conn->type == CONN_TYPE_AP)) {
-      if(!bestcirc ||
-        (circ->state == CIRCUIT_STATE_OPEN && bestcirc->timestamp_created < circ->timestamp_created)) {
+      if(circ->state == CIRCUIT_STATE_OPEN && (!bestcirc ||
+        bestcirc->timestamp_created < circ->timestamp_created)) {
         log(LOG_DEBUG,"circuit_get_newest_by_edge_type(): Choosing n_aci %d.", circ->n_aci);
+        assert(circ->n_aci);
         bestcirc = circ;
       }
     }
     if(edge_type == EDGE_EXIT && (!circ->n_conn || circ->n_conn->type == CONN_TYPE_EXIT)) {
-      if(!bestcirc ||
-        (circ->state == CIRCUIT_STATE_OPEN && bestcirc->timestamp_created < circ->timestamp_created))
+      if(circ->state == CIRCUIT_STATE_OPEN && (!bestcirc ||
+        bestcirc->timestamp_created < circ->timestamp_created))
         bestcirc = circ;
     }
   }
@@ -547,7 +548,7 @@ void circuit_about_to_close_connection(connection_t *conn) {
    * down the road, maybe we'll consider that eof doesn't mean can't-write
    */
   circuit_t *circ;
-  connection_t *prevconn, *tmpconn;
+  connection_t *prevconn;
 
   if(!connection_speaks_cells(conn)) {
     /* it's an edge conn. need to remove it from the linked list of

+ 0 - 1
src/or/command.c

@@ -258,7 +258,6 @@ void command_process_data_cell(cell_t *cell, connection_t *conn) {
 
 void command_process_destroy_cell(cell_t *cell, connection_t *conn) {
   circuit_t *circ;
-  connection_t *tmpconn;
 
   circ = circuit_get_by_aci_conn(cell->aci, conn);