From: Nick Mathewson Date: Wed, 14 Nov 2007 20:01:15 +0000 (+0000) Subject: r16670@catbus: nickm | 2007-11-14 14:56:30 -0500 X-Git-Tag: tor-0.2.0.12-alpha~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e843e0556355d1487a61640457d073238e214417;p=thirdparty%2Ftor.git r16670@catbus: nickm | 2007-11-14 14:56:30 -0500 Initial phase of proposal 110: accept RELAY_EARLY cells, and turn them into RELAY cells when sending them on over a v1 OR connection. svn:r12496 --- diff --git a/ChangeLog b/ChangeLog index c7cd26d2cc..c4c57a8948 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,10 @@ Changes in version 0.2.0.12-alpha - 2007-11-?? - When we're lacking a consensus, don't try to perform rendezvous operations. (Bug spotted by Karsten) + o Minor features: + - When we negotiate a v2 OR connection (not yet implemented), accept + RELAY_EARLY cells and turn them into RELAY cells if we've negotiated + a v1 connection. Initial code for proposal 110. Changes in version 0.2.0.11-alpha - 2007-11-12 o Security fixes: diff --git a/doc/TODO b/doc/TODO index 19b9f82a29..cb0755172d 100644 --- a/doc/TODO +++ b/doc/TODO @@ -72,8 +72,8 @@ Things we'd like to do in 0.2.0.x: - Don't extend a circuit over a noncanonical connection with mismatched address. - Learn our outgoing IP address from netinfo cells? - - Protocol revision. - - Earliest stages of 110 (infinite-length) in v2 protocol: + o Protocol revision. + o Earliest stages of 110 (infinite-length) in v2 protocol: add support for RELAY_EARLY. o Before the feature freeze: (Roger) o Make tunnelled dir conns use begin_dir if enabled diff --git a/src/or/command.c b/src/or/command.c index 9dc8408a87..b882878ee1 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -136,6 +136,7 @@ command_process_cell(cell_t *cell, or_connection_t *conn) PROCESS_CELL(created, cell, conn); break; case CELL_RELAY: + case CELL_RELAY_EARLY: ++stats_n_relay_cells_processed; PROCESS_CELL(relay, cell, conn); break; diff --git a/src/or/or.h b/src/or/or.h index 263e7c420a..a87d95ed7a 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -659,6 +659,7 @@ typedef enum { #define CELL_NETINFO 8 #define CELL_CERT 9 #define CELL_LINK_AUTH 10 +#define CELL_RELAY_EARLY 11 /*DOCDOC*/ #define CELL_COMMAND_IS_VAR_LENGTH(x) \ ((x) == CELL_CERT || (x) == CELL_VERSIONS) diff --git a/src/or/relay.c b/src/or/relay.c index d9ca3760f9..95d30a9842 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -1890,6 +1890,10 @@ append_cell_to_circuit_queue(circuit_t *circ, or_connection_t *orconn, queue = &orcirc->p_conn_cells; streams_blocked = circ->streams_blocked_on_p_conn; } + if (cell->command == CELL_RELAY_EARLY && orconn->link_proto < 2) { + /* V1 connections don't understand RELAY_EARLY. */ + cell->command = CELL_RELAY; + } cell_queue_append_packed_copy(queue, cell);