]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
check for duplicate circuit ID _after_ updating circ_id_type. tor-0.0.9rc5
authorNick Mathewson <nickm@torproject.org>
Wed, 1 Dec 2004 04:55:03 +0000 (04:55 +0000)
committerNick Mathewson <nickm@torproject.org>
Wed, 1 Dec 2004 04:55:03 +0000 (04:55 +0000)
svn:r3058

src/or/command.c

index 0e1e6f207f168af6d675c21ec3a3e5226f76ef53..1bf5d9ef0cd2802c9334694354b8bd88793ef1db 100644 (file)
@@ -137,13 +137,6 @@ static void command_process_create_cell(cell_t *cell, connection_t *conn) {
     return;
   }
 
-  circ = circuit_get_by_circ_id_conn(cell->circ_id, conn);
-
-  if (circ) {
-    log_fn(LOG_WARN,"received CREATE cell (circID %d) for known circ. Dropping.", cell->circ_id);
-    return;
-  }
-
   /* If the high bit of the circuit ID is not as expected, then switch
    * which half of the space we'll use for our own CREATE cells.
    *
@@ -160,6 +153,13 @@ static void command_process_create_cell(cell_t *cell, connection_t *conn) {
     conn->circ_id_type = CIRC_ID_TYPE_HIGHER;
   }
 
+  circ = circuit_get_by_circ_id_conn(cell->circ_id, conn);
+
+  if (circ) {
+    log_fn(LOG_WARN,"received CREATE cell (circID %d) for known circ. Dropping.", cell->circ_id);
+    return;
+  }
+
   circ = circuit_new(cell->circ_id, conn);
   circ->state = CIRCUIT_STATE_ONIONSKIN_PENDING;
   circ->purpose = CIRCUIT_PURPOSE_OR;