Commit c0c2001a authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

r16279@catbus: nickm | 2007-10-30 11:14:29 -0400

 Improved skew reporting:  "You are 365 days in the duture" is more useful than "You are 525600 minutes in the future".  Also, when we get something that proves we are at least an hour in the past, tell the controller "CLOCK_SKEW MIN_SKEW=-3600" rather than just "CLOCK_SKEW"


svn:r12283
parent 7709fb71
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -37,6 +37,12 @@ Changes in version 0.2.0.10-alpha - 2007-1?-??
      to $PREFIX/share/tor/fallback-consensus) for a consensus.  This way
      we start knowing some directory caches.
    - When we receive a consensus from the future, warn about skew.
    - Improve skew reporting: try to give the user a better log message about
      how skewed they are, and how much this matters.

  o Minor features (controller):
    - When reporting clock skew, and we only have a lower bound on the amount
      of skew, amount anyway, marked as a lower bound.

  - Utilities:
    - Update linux-tor-prio.sh script to allow QoS based on the uid of
+2 −2
Original line number Diff line number Diff line
@@ -58,10 +58,10 @@ Things we'd like to do in 0.2.0.x:
        - Revised handshake.
        - Have a 'waiting_for_authentication' state.
        - Only do version negotiation if we use the normalized TLS.
    . Skew issues:
    o Skew issues:
      o if you load (nick says receive/set/anything) a consensus that's
        in the future, then log about skew.
      - should change the "skew complaint" to specify in largest units
      o should change the "skew complaint" to specify in largest units
        rather than just seconds.
    - Learn new authority IPs from consensus/certs.
    - karsten's patches
+8 −6
Original line number Diff line number Diff line
@@ -1200,14 +1200,16 @@ $Id$

     CLOCK_SKEW
       SKEW="+" / "-" SECONDS
       MIN_SKEW="+" / "-" SECONDS.
       SOURCE="DIRSERV:IP:Port" / "NETWORKSTATUS:IP:PORT" / "CONSENSUS"
         If "SKEW" is present, it's an estimate of how far we are from the
         time declared in the source.  If the source is a DIRSERV, we got
         the current time from a connection to a dirserver.  If the source is
         a NETWORKSTATUS, we decided we're skewed because we got a v2
         networkstatus from far in the future.  If the source is
         CONSENSUS, we decided we're skewed because we got a networkstatus
         consensus from the future.
         time declared in the source.  (In other words, if we're an hour in
         the past, the value is -3600.)  "MIN_SKEW" is present, it's a lower
         bound.  If the source is a DIRSERV, we got the current time from a
         connection to a dirserver.  If the source is a NETWORKSTATUS, we
         decided we're skewed because we got a v2 networkstatus from far in
         the future.  If the source is CONSENSUS, we decided we're skewed
         because we got a networkstatus consensus from the future.

         {Controllers may want to warn the user if the skew is high, or if
         multiple skew messages appear at severity WARN.  Controllers
+35 −0
Original line number Diff line number Diff line
@@ -1250,6 +1250,41 @@ parse_http_time(const char *date, struct tm *tm)
  return 0;
}

/** DOCDOC */
int
format_time_interval(char *out, size_t out_len, long interval)
{
  /* We only report seconds if there's no hours. */
  long sec = 0, min = 0, hour = 0, day = 0;
  if (interval < 0)
    interval = -interval;

  if (interval >= 86400) {
    day = interval / 86400;
    interval %= 86400;
  }
  if (interval >= 3600) {
    hour = interval / 3600;
    interval %= 3600;
  }
  if (interval >= 60) {
    min = interval / 60;
    interval %= 60;
  }
  sec = interval;

  if (day) {
    return tor_snprintf(out, out_len, "%ld days, %ld hours, %ld minutes",
                        day, hour, min);
  } else if (hour) {
    return tor_snprintf(out, out_len, "%ld hours, %ld minutes", hour, min);
  } else if (min) {
    return tor_snprintf(out, out_len, "%ld minutes, %ld seconds", min, sec);
  } else {
    return tor_snprintf(out, out_len, "%ld seconds", sec);
  }
}

/* =====
 * Fuzzy time
 * ===== */
+1 −0
Original line number Diff line number Diff line
@@ -206,6 +206,7 @@ void format_local_iso_time(char *buf, time_t t);
void format_iso_time(char *buf, time_t t);
int parse_iso_time(const char *buf, time_t *t);
int parse_http_time(const char *buf, struct tm *tm);
int format_time_interval(char *out, size_t out_len, long interval);
/* Fuzzy time. */
void ftime_set_maximum_sloppiness(int seconds);
void ftime_set_estimated_skew(int seconds);
Loading