[tor-commits] [tor/master] Fix some #5040 bugs found by Nick's tests.
nickm at torproject.org
nickm at torproject.org
Thu Aug 15 16:16:46 UTC 2013
commit 794447d03db263a0b887db53fc6bcd2c8d24eb71
Author: George Kadianakis <desnacked at 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_);
More information about the tor-commits
mailing list