[tor-commits] [tor/master] Better handling (I think) for onionskin timing w jumpy clocks

andrea at torproject.org andrea at torproject.org
Thu Jan 24 16:11:39 UTC 2013


commit 677d18278e5b27a43f3f56906d97a9575d26c6f4
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Jan 3 13:26:59 2013 -0500

    Better handling (I think) for onionskin timing w jumpy clocks
    
    The fix: Instead of clipping huge/negative times, ignore them as
    probably invalid.
---
 src/or/cpuworker.c |   25 ++++++++++++-------------
 1 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index 42f7b95..52a0117 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -320,19 +320,18 @@ connection_cpu_process_inbuf(connection_t *conn)
       tor_gettimeofday(&tv_end);
       timersub(&tv_end, &rpl.started_at, &tv_diff);
       usec_roundtrip = ((int64_t)tv_diff.tv_sec)*1000000 + tv_diff.tv_usec;
-      if (usec_roundtrip < 0 ||
-          usec_roundtrip > MAX_BELIEVABLE_ONIONSKIN_DELAY) {
-        usec_roundtrip = MAX_BELIEVABLE_ONIONSKIN_DELAY;
-      }
-      ++onionskins_n_processed[rpl.handshake_type];
-      onionskins_usec_internal[rpl.handshake_type] += rpl.n_usec;
-      onionskins_usec_roundtrip[rpl.handshake_type] += usec_roundtrip;
-      if (onionskins_n_processed[rpl.handshake_type] >= 500000) {
-        /* Scale down every 500000 handshakes.  On a busy server, that's
-         * less impressive than it sounds. */
-        onionskins_n_processed[rpl.handshake_type] /= 2;
-        onionskins_usec_internal[rpl.handshake_type] /= 2;
-        onionskins_usec_roundtrip[rpl.handshake_type] /= 2;
+      if (usec_roundtrip >= 0 &&
+          usec_roundtrip < MAX_BELIEVABLE_ONIONSKIN_DELAY) {
+        ++onionskins_n_processed[rpl.handshake_type];
+        onionskins_usec_internal[rpl.handshake_type] += rpl.n_usec;
+        onionskins_usec_roundtrip[rpl.handshake_type] += usec_roundtrip;
+        if (onionskins_n_processed[rpl.handshake_type] >= 500000) {
+          /* Scale down every 500000 handshakes.  On a busy server, that's
+           * less impressive than it sounds. */
+          onionskins_n_processed[rpl.handshake_type] /= 2;
+          onionskins_usec_internal[rpl.handshake_type] /= 2;
+          onionskins_usec_roundtrip[rpl.handshake_type] /= 2;
+        }
       }
     }
     /* parse out the circ it was talking about */





More information about the tor-commits mailing list