mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-20 02:09:24 +01:00
Fix an assertion failure on double-marked circuits, and a double-mark.
svn:r17179
This commit is contained in:
parent
0c9dfffe5a
commit
c534b96e58
@ -1,4 +1,4 @@
|
||||
Changes in version 0.2.1.7-alpha - 2008-10-xx
|
||||
Changes in version 0.2.1.7-alpha - 2008-11-xx
|
||||
o Security fixes:
|
||||
- The "ClientDNSRejectInternalAddresses" config option wasn't being
|
||||
consistently obeyed: if an exit relay refuses a stream because its
|
||||
@ -120,6 +120,8 @@ Changes in version 0.2.1.6-alpha - 2008-09-30
|
||||
- Make TrackHostExit mappings expire a while after their last use, not
|
||||
after their creation. Patch from Robert Hogan.
|
||||
- Provide circuit purposes along with circuit events to the controller.
|
||||
- Make the assert_circuit_ok() function work correctly on circuits that
|
||||
have already been marked for close.
|
||||
|
||||
o Minor bugfixes:
|
||||
- Fix compile on OpenBSD 4.4-current. Bugfix on 0.2.1.5-alpha.
|
||||
|
@ -1208,13 +1208,21 @@ assert_circuit_ok(const circuit_t *c)
|
||||
if (c->n_conn) {
|
||||
tor_assert(!c->n_hop);
|
||||
|
||||
if (c->n_circ_id)
|
||||
tor_assert(c == circuit_get_by_circid_orconn(c->n_circ_id, c->n_conn));
|
||||
if (c->n_circ_id) {
|
||||
/* We use the _impl variant here to make sure we don't fail on marked
|
||||
* circuits, which would not be returned by the regular function. */
|
||||
circuit_t *c2 = circuit_get_by_circid_orconn_impl(c->n_circ_id,
|
||||
c->n_conn);
|
||||
tor_assert(c == c2);
|
||||
}
|
||||
}
|
||||
if (or_circ && or_circ->p_conn) {
|
||||
if (or_circ->p_circ_id)
|
||||
tor_assert(c == circuit_get_by_circid_orconn(or_circ->p_circ_id,
|
||||
or_circ->p_conn));
|
||||
if (or_circ->p_circ_id) {
|
||||
/* ibid */
|
||||
circuit_t *c2 = circuit_get_by_circid_orconn_impl(or_circ->p_circ_id,
|
||||
or_circ->p_conn);
|
||||
tor_assert(c == c2);
|
||||
}
|
||||
}
|
||||
#if 0 /* false now that rendezvous exits are attached to p_streams */
|
||||
if (origin_circ)
|
||||
|
@ -1495,7 +1495,7 @@ connection_ap_handshake_attach_circuit(edge_connection_t *conn)
|
||||
/* abort parallel intro circs, if any */
|
||||
for (c = global_circuitlist; c; c = c->next) {
|
||||
if (c->purpose == CIRCUIT_PURPOSE_C_INTRODUCING &&
|
||||
CIRCUIT_IS_ORIGIN(c)) {
|
||||
!c->marked_for_close && CIRCUIT_IS_ORIGIN(c)) {
|
||||
origin_circuit_t *oc = TO_ORIGIN_CIRCUIT(c);
|
||||
if (oc->rend_data &&
|
||||
!rend_cmp_service_ids(conn->rend_data->onion_address,
|
||||
|
Loading…
Reference in New Issue
Block a user