diff --git a/src/or/or.h b/src/or/or.h index e246ac42e2..2acb621014 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2611,11 +2611,24 @@ typedef struct origin_circuit_t { * according to our current circuit-build timeout, but which has * been kept around because it might still succeed in connecting to * its destination, and which is not a fully-connected rendezvous - * circuit. */ + * circuit. + * + * (We clear this flag for client-side rendezvous circuits when they + * are 'joined' to the other side's rendezvous circuit, so that + * connection_ap_handshake_attach_circuit can put client streams on + * the circuit. We also clear this flag for service-side rendezvous + * circuits when they are 'joined' to a client's rend circ, but only + * for symmetry with the client case. Client-side introduction + * circuits are closed when we get a joined rend circ, and + * service-side introduction circuits never have this flag set.) */ unsigned int hs_circ_has_timed_out : 1; /** Set iff this is a service-side rendezvous circuit for which a - * new connection attempt has been launched. */ + * new connection attempt has been launched. We consider launching + * a new service-side rend circ to a client when the previous one + * fails; now that we don't necessarily close a service-side rend + * circ when we launch a new one to the same client, this flag keeps + * us from launching two retries for the same failed rend circ. */ unsigned int hs_service_side_rend_circ_has_been_relaunched : 1; /** What commands were sent over this circuit that decremented the