From e3f6f92cf7d3a2fedc387ed1084aa82815c911dd Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 1 Dec 2004 04:55:03 +0000 Subject: check for duplicate circuit ID _after_ updating circ_id_type. svn:r3058 --- src/or/command.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/or/command.c b/src/or/command.c index 0e1e6f207..1bf5d9ef0 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -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; -- cgit v1.2.3