From: Roger Dingledine Date: Mon, 2 Apr 2018 05:00:31 +0000 (-0400) Subject: use channel_is_client for create cell counts X-Git-Tag: tor-0.3.4.1-alpha~189 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=61905932565a8ff426981d77bf162f85e7f6c3ea;p=thirdparty%2Ftor.git use channel_is_client for create cell counts When a relay is collecting internal statistics about how many create cell requests it has seen of each type, accurately count the requests from relays that temporarily fall out of the consensus. (To be extra conservative, we were already ignoring requests from clients in our counts, and we continue ignoring them here.) Fixes bug 24910; bugfix on 0.2.4.17-rc. --- diff --git a/changes/bug24910 b/changes/bug24910 new file mode 100644 index 0000000000..58574c0069 --- /dev/null +++ b/changes/bug24910 @@ -0,0 +1,7 @@ + o Minor bugfixes (relay statistics): + - When a relay is collecting internal statistics about how many + create cell requests it has seen of each type, accurately count the + requests from relays that temporarily fall out of the consensus. (To + be extra conservative, we were already ignoring requests from + clients in our counts, and we continue ignoring them here.) Fixes + bug 24910; bugfix on 0.2.4.17-rc. diff --git a/src/or/command.c b/src/or/command.c index 7280be1396..4f99462f38 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -339,7 +339,9 @@ command_process_create_cell(cell_t *cell, channel_t *chan) return; } - if (connection_or_digest_is_known_relay(chan->identity_digest)) { + if (!channel_is_client(chan)) { + /* remember create types we've seen, but don't remember them from + * clients, to be extra conservative about client statistics. */ rep_hist_note_circuit_handshake_requested(create_cell->handshake_type); } diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index 50761dd4d3..7da7dc5f8b 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -547,7 +547,7 @@ assign_onionskin_to_cpuworker(or_circuit_t *circ, return 0; } - if (connection_or_digest_is_known_relay(circ->p_chan->identity_digest)) + if (!channel_is_client(circ->p_chan)) rep_hist_note_circuit_handshake_assigned(onionskin->handshake_type); should_time = should_time_request(onionskin->handshake_type);