Directory authorities shouldn't complain about bootstrapping

problems just because they do a lot of reachability testing and
some of the connection attempts fail. 


svn:r15348
This commit is contained in:
Roger Dingledine 2008-06-18 07:34:04 +00:00
parent 50d3adb819
commit c6a94718cd
4 changed files with 21 additions and 13 deletions

View File

@ -26,6 +26,9 @@ Changes in version 0.2.1.2-alpha - 2008-??-??
from cannibalized circuits are completely ignored and not included in from cannibalized circuits are completely ignored and not included in
rendezvous service descriptors. This might be another reason for delay rendezvous service descriptors. This might be another reason for delay
in making a hidden service available. Bugfix on 0.2.0.14-alpha. in making a hidden service available. Bugfix on 0.2.0.14-alpha.
- Directory authorities shouldn't complain about bootstrapping
problems just because they do a lot of reachability testing and
some of the connection attempts fail.
Changes in version 0.2.1.1-alpha - 2008-06-13 Changes in version 0.2.1.1-alpha - 2008-06-13

View File

@ -329,15 +329,15 @@ R - then document the bridge user download timeline.
======================================================================= =======================================================================
For 0.2.1.2-alpha: For 0.2.1.2-alpha:
R - bug: if we launch using bridges, and then stop using bridges, we R d bug: if we launch using bridges, and then stop using bridges, we
still have our bridges in our entryguards section, and may use them. still have our bridges in our entryguards section, and may use them.
R - add an event to report geoip summaries to vidalia for bridge relays, R d add an event to report geoip summaries to vidalia for bridge relays,
so vidalia can say "recent activity (1-8 users) from sa". so vidalia can say "recent activity (1-8 users) from sa".
R - investigate: it looks like if the bridge authority is unreachable, R - investigate: it looks like if the bridge authority is unreachable,
we're not falling back on querying bridges directly? we're not falling back on querying bridges directly?
R o a getinfo so vidalia can query our current bootstrap state, in o a getinfo so vidalia can query our current bootstrap state, in
case it attaches partway through and wants to catch up. case it attaches partway through and wants to catch up.
R - directory authorities shouldn't complain about bootstrapping problems o directory authorities shouldn't complain about bootstrapping problems
just because they do a lot of reachability testing and some of just because they do a lot of reachability testing and some of
it fails. it fails.
R - if your bridge is unreachable, it won't generate enough connection R - if your bridge is unreachable, it won't generate enough connection

View File

@ -495,13 +495,15 @@ connection_about_to_close_connection(connection_t *conn)
/* Remember why we're closing this connection. */ /* Remember why we're closing this connection. */
if (conn->state != OR_CONN_STATE_OPEN) { if (conn->state != OR_CONN_STATE_OPEN) {
if (connection_or_nonopen_was_started_here(or_conn)) { if (connection_or_nonopen_was_started_here(or_conn)) {
or_options_t *options = get_options();
rep_hist_note_connect_failed(or_conn->identity_digest, now); rep_hist_note_connect_failed(or_conn->identity_digest, now);
entry_guard_register_connect_status(or_conn->identity_digest,0,now); entry_guard_register_connect_status(or_conn->identity_digest,0,now);
if (!get_options()->HttpsProxy) if (!options->HttpsProxy)
router_set_status(or_conn->identity_digest, 0); router_set_status(or_conn->identity_digest, 0);
if (conn->state == OR_CONN_STATE_CONNECTING) { if (conn->state == OR_CONN_STATE_CONNECTING) {
control_event_or_conn_status(or_conn, OR_CONN_EVENT_FAILED, control_event_or_conn_status(or_conn, OR_CONN_EVENT_FAILED,
errno_to_orconn_end_reason(or_conn->socket_error)); errno_to_orconn_end_reason(or_conn->socket_error));
if (!authdir_mode_tests_reachability(options))
control_event_bootstrap_problem( control_event_bootstrap_problem(
tor_socket_strerror(or_conn->socket_error), tor_socket_strerror(or_conn->socket_error),
errno_to_orconn_end_reason(or_conn->socket_error)); errno_to_orconn_end_reason(or_conn->socket_error));
@ -510,6 +512,7 @@ connection_about_to_close_connection(connection_t *conn)
control_event_or_conn_status(or_conn, OR_CONN_EVENT_FAILED, control_event_or_conn_status(or_conn, OR_CONN_EVENT_FAILED,
reason); reason);
/* XXX021 come up with a better string for the first arg */ /* XXX021 come up with a better string for the first arg */
if (!authdir_mode_tests_reachability(options))
control_event_bootstrap_problem( control_event_bootstrap_problem(
orconn_end_reason_to_control_string(reason), reason); orconn_end_reason_to_control_string(reason), reason);
} }

View File

@ -548,6 +548,7 @@ connection_or_connect(uint32_t addr, uint16_t port, const char *id_digest)
} }
control_event_or_conn_status(conn, OR_CONN_EVENT_FAILED, control_event_or_conn_status(conn, OR_CONN_EVENT_FAILED,
errno_to_orconn_end_reason(socket_error)); errno_to_orconn_end_reason(socket_error));
if (!authdir_mode_tests_reachability(options))
control_event_bootstrap_problem(tor_socket_strerror(socket_error), control_event_bootstrap_problem(tor_socket_strerror(socket_error),
errno_to_orconn_end_reason(socket_error)); errno_to_orconn_end_reason(socket_error));
connection_free(TO_CONN(conn)); connection_free(TO_CONN(conn));
@ -799,6 +800,7 @@ connection_or_check_valid_tls_handshake(or_connection_t *conn,
router_set_status(conn->identity_digest, 0); router_set_status(conn->identity_digest, 0);
control_event_or_conn_status(conn, OR_CONN_EVENT_FAILED, control_event_or_conn_status(conn, OR_CONN_EVENT_FAILED,
END_OR_CONN_REASON_OR_IDENTITY); END_OR_CONN_REASON_OR_IDENTITY);
if (!authdir_mode_tests_reachability(options))
control_event_bootstrap_problem("foo", END_OR_CONN_REASON_OR_IDENTITY); control_event_bootstrap_problem("foo", END_OR_CONN_REASON_OR_IDENTITY);
as_advertised = 0; as_advertised = 0;
} }