if (rh.command == RELAY_COMMAND_BEGIN_DIR) {
tor_assert(or_circ);
- if (or_circ->p_conn && !tor_addr_is_null(&or_circ->p_conn->_base.addr))
- tor_addr_assign(&n_stream->_base.addr, &or_circ->p_conn->_base.addr);
+ if (or_circ->p_conn && !tor_addr_is_null(&or_circ->p_conn->real_addr))
+ tor_addr_assign(&n_stream->_base.addr, &or_circ->p_conn->real_addr);
return connection_exit_connect_dir(n_stream);
}
dirconn->_base.addr = exitconn->_base.addr;
dirconn->_base.port = 0;
- dirconn->_base.address = tor_strdup(circ->p_conn->_base.address);
+ dirconn->_base.address = tor_strdup(exitconn->address);
dirconn->_base.type = CONN_TYPE_DIR;
dirconn->_base.purpose = DIR_PURPOSE_SERVER;
dirconn->_base.state = DIR_CONN_STATE_SERVER_COMMAND_WAIT;