From eb0a19c47536633497b778924cd987dc8c877a36 Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Thu, 22 Jul 2004 03:47:20 +0000 Subject: change 0.0.8 extend cell format so it's compatible with 0.0.7 svn:r2094 --- src/or/circuitbuild.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'src/or/circuitbuild.c') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 5887437931..40c57e01b0 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -401,15 +401,10 @@ int circuit_send_next_onion_skin(circuit_t *circ) { *(uint32_t*)payload = htonl(hop->addr); *(uint16_t*)(payload+4) = htons(hop->port); - if (strncmp(router->platform, "Tor 0.0.7", 9)) { - /* Before 0.0.8, we didn't support the long payload format. */ - memcpy(payload+2+4, hop->identity_digest, DIGEST_LEN); - onionskin = payload+2+4+DIGEST_LEN; - payload_len = 2+4+DIGEST_LEN+ONIONSKIN_CHALLENGE_LEN; - } else { - onionskin = payload+2+4; - payload_len = 2+4+ONIONSKIN_CHALLENGE_LEN; - } + + onionskin = payload+2+4; + memcpy(payload+2+4+ONIONSKIN_CHALLENGE_LEN, hop->identity_digest, DIGEST_LEN); + payload_len = 2+4+ONIONSKIN_CHALLENGE_LEN+DIGEST_LEN; if(onion_skin_create(router->onion_pkey, &(hop->handshake_state), onionskin) < 0) { log_fn(LOG_WARN,"onion_skin_create failed."); @@ -450,7 +445,7 @@ int circuit_extend(cell_t *cell, circuit_t *circ) { /* Once this format is no longer supported, nobody will use * connection_*_get_by_addr_port. */ old_format = 1; - } else if (rh.length == 4+2+DIGEST_LEN+ONIONSKIN_CHALLENGE_LEN) { + } else if (rh.length == 4+2+ONIONSKIN_CHALLENGE_LEN+DIGEST_LEN) { old_format = 0; } else { log_fn(LOG_WARN, "Wrong length on extend cell. Closing circuit."); @@ -464,9 +459,9 @@ int circuit_extend(cell_t *cell, circuit_t *circ) { n_conn = connection_twin_get_by_addr_port(circ->n_addr,circ->n_port); onionskin = cell->payload+RELAY_HEADER_SIZE+4+2; } else { - id_digest = cell->payload+RELAY_HEADER_SIZE+4+2; + onionskin = cell->payload+RELAY_HEADER_SIZE+4+2; + id_digest = cell->payload+RELAY_HEADER_SIZE+4+2+ONIONSKIN_CHALLENGE_LEN; n_conn = connection_get_by_identity_digest(id_digest, CONN_TYPE_OR); - onionskin = cell->payload+RELAY_HEADER_SIZE+4+2+DIGEST_LEN; } if(!n_conn) { /* we should try to open a connection */ -- cgit v1.2.3-54-g00ecf