mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
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.
This commit is contained in:
parent
f549e4c36d
commit
794447d03d
@ -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;
|
||||
}
|
||||
|
@ -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_);
|
||||
|
Loading…
Reference in New Issue
Block a user