[tor-commits] [tor/master] Log what fraction of EXTEND cells have died for being non-early

arma at torproject.org arma at torproject.org
Sun Dec 25 22:46:27 UTC 2011


commit 847541ce5db48152576639d7adc0a6209b661be9
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon Nov 21 17:51:46 2011 -0500

    Log what fraction of EXTEND cells have died for being non-early
---
 src/or/relay.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/src/or/relay.c b/src/or/relay.c
index 60d439a..fdc2600 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -1188,7 +1188,9 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
         connection_mark_and_flush(TO_CONN(conn));
       }
       return 0;
-    case RELAY_COMMAND_EXTEND:
+    case RELAY_COMMAND_EXTEND: {
+      static uint64_t total_n_extend=0, total_nonearly=0;
+      total_n_extend++;
       if (conn) {
         log_fn(LOG_PROTOCOL_WARN, domain,
                "'extend' cell received for non-zero stream. Dropping.");
@@ -1200,10 +1202,15 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
           RATELIM_INIT(EARLY_WARNING_INTERVAL);
         char *m;
         if (cell->command == CELL_RELAY) {
+          ++total_nonearly;
           if ((m = rate_limit_log(&early_warning_limit, approx_time()))) {
             /* XXXX make this a protocol_warn once we're happier with it*/
+            double percentage = ((double)total_nonearly)/total_n_extend;
+            percentage *= 100;
             log_fn(LOG_WARN, domain, "EXTEND cell received, "
                    "but not via RELAY_EARLY. Dropping.%s", m);
+            log_fn(LOG_WARN, domain, "  (We have dropped %.02f%% of all "
+                   "EXTEND cells for this reason)", percentage);
             tor_free(m);
           }
         } else {
@@ -1214,6 +1221,7 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
         return 0;
       }
       return circuit_extend(cell, circ);
+    }
     case RELAY_COMMAND_EXTENDED:
       if (!layer_hint) {
         log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,





More information about the tor-commits mailing list