Commit cb4cedae authored by Nick Mathewson's avatar Nick Mathewson 🐻
Browse files

Explain why we use "mark_as_used_for_origin_circuit" where we do

Also, explain why it's relevant for bootstrapping.

This is a comments-only patch.
parent 781ab9ee
...@@ -2447,6 +2447,9 @@ channel_get_for_extend,(const char *rsa_id_digest, ...@@ -2447,6 +2447,9 @@ channel_get_for_extend,(const char *rsa_id_digest,
if (matches_target) { if (matches_target) {
++n_inprogress_goodaddr; ++n_inprogress_goodaddr;
if (for_origin_circ) { if (for_origin_circ) {
/* We were looking for a connection for an origin circuit; this one
* matches, so we'll note that we decided to use it for an origin
* circuit. */
channel_mark_as_used_for_origin_circuit(chan); channel_mark_as_used_for_origin_circuit(chan);
} }
} }
......
...@@ -365,7 +365,10 @@ channel_tls_handle_incoming(or_connection_t *orconn) ...@@ -365,7 +365,10 @@ channel_tls_handle_incoming(or_connection_t *orconn)
* corresponding to the provided channel. * corresponding to the provided channel.
* *
* This flag indicates that if the connection fails, it might be interesting * This flag indicates that if the connection fails, it might be interesting
* to the bootstrapping subsystem. * to the bootstrapping subsystem. (The bootstrapping system only cares about
* channels that we have tried to use for our own circuits. Other channels
* may have been launched in response to EXTEND cells from somebody else, and
* if they fail, it won't necessarily indicate a bootstrapping problem.)
**/ **/
void void
channel_mark_as_used_for_origin_circuit(channel_t *chan) channel_mark_as_used_for_origin_circuit(channel_t *chan)
......
...@@ -591,6 +591,10 @@ circuit_handle_first_hop(origin_circuit_t *circ) ...@@ -591,6 +591,10 @@ circuit_handle_first_hop(origin_circuit_t *circ)
log_info(LD_CIRC,"connect to firsthop failed. Closing."); log_info(LD_CIRC,"connect to firsthop failed. Closing.");
return -END_CIRC_REASON_CONNECTFAILED; return -END_CIRC_REASON_CONNECTFAILED;
} }
/* We didn't find a channel, but we're launching one for an origin
* circuit. (If we decided not to launch a channel, then we found at
* least one once good in-progress channel use for this circuit, and
* marked it in channel_get_for_extend().) */
channel_mark_as_used_for_origin_circuit(n_chan); channel_mark_as_used_for_origin_circuit(n_chan);
circuit_chan_publish(circ, n_chan); circuit_chan_publish(circ, n_chan);
} }
...@@ -604,6 +608,7 @@ circuit_handle_first_hop(origin_circuit_t *circ) ...@@ -604,6 +608,7 @@ circuit_handle_first_hop(origin_circuit_t *circ)
} else { /* it's already open. use it. */ } else { /* it's already open. use it. */
tor_assert(!circ->base_.n_hop); tor_assert(!circ->base_.n_hop);
circ->base_.n_chan = n_chan; circ->base_.n_chan = n_chan;
/* We found a channel, and we're using it for an origin circuit. */
channel_mark_as_used_for_origin_circuit(n_chan); channel_mark_as_used_for_origin_circuit(n_chan);
circuit_chan_publish(circ, n_chan); circuit_chan_publish(circ, n_chan);
log_debug(LD_CIRC,"Conn open for %s. Delivering first onion skin.", log_debug(LD_CIRC,"Conn open for %s. Delivering first onion skin.",
......
...@@ -348,8 +348,17 @@ control_event_bootstrap_prob_or, (const char *warn, int reason, ...@@ -348,8 +348,17 @@ control_event_bootstrap_prob_or, (const char *warn, int reason,
{ {
int dowarn = 0; int dowarn = 0;
if (! or_conn->potentially_used_for_bootstrapping) if (! or_conn->potentially_used_for_bootstrapping) {
/* We never decided that this channel was a good match for one of our
* origin_circuit_t objects. That means that we probably launched it
* for somebody else, most likely in response to an EXTEND cell.
*
* Since EXTEND cells can contain arbitrarily broken descriptions of
* relays, a failure on this connection here won't necessarily indicate a
* bootstrapping problem.
*/
return; return;
}
if (or_conn->have_noted_bootstrap_problem) if (or_conn->have_noted_bootstrap_problem)
return; return;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment