diff options
author | Nick Mathewson <nickm@torproject.org> | 2016-11-10 09:10:55 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2016-11-10 09:10:55 -0500 |
commit | e8e7a8f3db9dfbc71e455eef3c7991c715231260 (patch) | |
tree | 0968555194d191cd54b330664c8ac0acf3e32c16 /src/or | |
parent | e4ef9f7491ed1495869692b57644885f9772bef5 (diff) | |
parent | 0ec94588ab4e83dbc8d405dc780139cd3e596880 (diff) | |
download | tor-e8e7a8f3db9dfbc71e455eef3c7991c715231260.tar.gz tor-e8e7a8f3db9dfbc71e455eef3c7991c715231260.zip |
Merge remote-tracking branch 'teor/bug20613' into maint-0.2.9
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/circuituse.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/or/circuituse.c b/src/or/circuituse.c index f344703331..84574cd5b9 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -788,6 +788,8 @@ static time_t last_expired_clientside_circuits = 0; * As a diagnostic for bug 8387, log information about how many one-hop * circuits we have around that have been there for at least <b>age</b> * seconds. Log a few of them. + * Ignores Single Onion Service intro and Tor2web redezvous circuits, they are + * expected to be long-term one-hop circuits. */ void circuit_log_ancient_one_hop_circuits(int age) @@ -797,6 +799,7 @@ circuit_log_ancient_one_hop_circuits(int age) time_t cutoff = now - age; int n_found = 0; smartlist_t *log_these = smartlist_new(); + const or_options_t *options = get_options(); SMARTLIST_FOREACH_BEGIN(circuit_get_global_list(), circuit_t *, circ) { const origin_circuit_t *ocirc; @@ -804,6 +807,19 @@ circuit_log_ancient_one_hop_circuits(int age) continue; if (circ->timestamp_created.tv_sec >= cutoff) continue; + /* Single Onion Services deliberately make long term one-hop intro + * connections. We only ignore active intro point connections, if we take + * a long time establishing, that's worth logging. */ + if (rend_service_allow_non_anonymous_connection(options) && + circ->purpose == CIRCUIT_PURPOSE_S_INTRO) + continue; + /* Tor2web deliberately makes long term one-hop rend connections, + * particularly when Tor2webRendezvousPoints is used. We only ignore + * active rend point connections, if we take a long time to rendezvous, + * that's worth logging. */ + if (rend_client_allow_non_anonymous_connection(options) && + circ->purpose == CIRCUIT_PURPOSE_C_REND_JOINED) + continue; ocirc = CONST_TO_ORIGIN_CIRCUIT(circ); if (ocirc->build_state && ocirc->build_state->onehop_tunnel) { @@ -839,7 +855,7 @@ circuit_log_ancient_one_hop_circuits(int age) tor_asprintf(&dirty, "Dirty since %s (%ld seconds vs %ld-second cutoff)", dirty_since, (long)(now - circ->timestamp_dirty), - (long) get_options()->MaxCircuitDirtiness); + (long) options->MaxCircuitDirtiness); } else { dirty = tor_strdup("Not marked dirty"); } |