tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit 4692cf868868ecb813d690f7c9b9f37830b06028
parent 01b0954b2335b8f1fe672c2d64666937876bb845
Author: David Goulet <dgoulet@torproject.org>
Date:   Tue, 11 Oct 2022 10:09:37 -0400

Merge branch 'maint-0.4.7'

Diffstat:
Achanges/bug40673 | 7+++++++
Msrc/feature/relay/onion_queue.c | 7++++++-
2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/changes/bug40673 b/changes/bug40673 @@ -0,0 +1,7 @@ + o Minor bugfixes (relay overload statistics): + - Count total create cells vs dropped rate cells properly, when + assessing if our fraction of dropped cells is too high. We only + count non-client circuits in the denominator, but we would include + client circuits in the numerator, leading to surprising log lines + claiming that we had dropped more than 100% of incoming create + cells. Fixes bug 40673; bugfix on 0.4.7.1-alpha. diff --git a/src/feature/relay/onion_queue.c b/src/feature/relay/onion_queue.c @@ -36,6 +36,7 @@ #include "feature/stats/rephist.h" #include "core/or/or_circuit_st.h" +#include "core/or/channel.h" /** Type for a linked list of circuits that are waiting for a free CPU worker * to process a waiting onion handshake. */ @@ -188,7 +189,11 @@ onion_pending_add(or_circuit_t *circ, create_cell_t *onionskin) #define WARN_TOO_MANY_CIRC_CREATIONS_INTERVAL (60) static ratelim_t last_warned = RATELIM_INIT(WARN_TOO_MANY_CIRC_CREATIONS_INTERVAL); - rep_hist_note_circuit_handshake_dropped(queue_idx); + if (!channel_is_client(circ->p_chan)) { + // Avoid counting create cells from clients, to go with the same + // check in command_process_create_cell(). + rep_hist_note_circuit_handshake_dropped(queue_idx); + } if (queue_idx == ONION_HANDSHAKE_TYPE_NTOR) { char *m; if ((m = rate_limit_log(&last_warned, approx_time()))) {