commit 794447d03db263a0b887db53fc6bcd2c8d24eb71 Author: George Kadianakis desnacked@riseup.net Date: Mon Aug 5 19:08:14 2013 +0300
Fix some #5040 bugs found by Nick's tests.
- Set conn->address when we receive a USERADDR command. - Set conn->state to a sane value when we transition from Extended ORPort to ORPort. --- src/or/ext_orport.c | 5 +++++ src/test/test_extorport.c | 5 +---- 2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/or/ext_orport.c b/src/or/ext_orport.c index fdcecac..d5a0fa1 100644 --- a/src/or/ext_orport.c +++ b/src/or/ext_orport.c @@ -80,6 +80,7 @@ connection_ext_or_transition(or_connection_t *conn) tor_assert(conn->base_.type == CONN_TYPE_EXT_OR);
conn->base_.type = CONN_TYPE_OR; + TO_CONN(conn)->state = 0; // set the state to a neutral value control_event_or_conn_status(conn, OR_CONN_EVENT_NEW, 0); connection_tls_start_handshake(conn, 1); } @@ -474,6 +475,10 @@ connection_ext_or_handle_cmd_useraddr(connection_t *conn, /* record the address */ tor_addr_copy(&conn->addr, &addr); conn->port = port; + if (conn->address) { + tor_free(conn->address); + } + conn->address = tor_dup_addr(&addr);
return 0; } diff --git a/src/test/test_extorport.c b/src/test/test_extorport.c index e76808f..b32ca35 100644 --- a/src/test/test_extorport.c +++ b/src/test/test_extorport.c @@ -505,10 +505,7 @@ test_ext_or_handshake(void *arg) tt_int_op(is_reading,==,1); tt_int_op(handshake_start_called,==,1); tt_int_op(TO_CONN(conn)->type, ==, CONN_TYPE_OR); - /* XXXXX the state is now nonsensical! It should be set to something - * neutral (zero?) before we connection_or_change_state; right now - * it's EXT_OR_CONN_STATE_FLUSHING */ - /* tt_int_op(TO_CONN(conn)->state, ==, 0); XXXX */ + tt_int_op(TO_CONN(conn)->state, ==, 0);
done: UNMOCK(connection_write_to_buf_impl_);
tor-commits@lists.torproject.org