Browse Source

Make trusted clock skew a bootstrap warning

Make clock skew events based on trusted sources produce a bootstrap
warning so controllers can more easily alert users about clock skew
problems.
Taylor Yu 6 years ago
parent
commit
449bb2351e
1 changed files with 7 additions and 2 deletions
  1. 7 2
      src/or/connection.c

+ 7 - 2
src/or/connection.c

@@ -5221,7 +5221,7 @@ clock_skew_warning(const connection_t *conn, long apparent_skew, int trusted,
                    const char *source)
 {
   char dbuf[64];
-  char *ext_source = NULL;
+  char *ext_source = NULL, *warn = NULL;
   format_time_interval(dbuf, sizeof(dbuf), apparent_skew);
   if (conn)
     tor_asprintf(&ext_source, "%s:%s:%d", source, conn->address, conn->port);
@@ -5235,9 +5235,14 @@ clock_skew_warning(const connection_t *conn, long apparent_skew, int trusted,
          apparent_skew > 0 ? "ahead" : "behind", dbuf,
          apparent_skew > 0 ? "behind" : "ahead",
          (!conn || trusted) ? "" : ", or they are sending us the wrong time");
-  if (trusted)
+  if (trusted) {
     control_event_general_status(LOG_WARN, "CLOCK_SKEW SKEW=%ld SOURCE=%s",
                                  apparent_skew, ext_source);
+    tor_asprintf(&warn, "Clock skew %ld in %s from %s", apparent_skew,
+                 received, source);
+    control_event_bootstrap_problem(warn, "CLOCK_SKEW", conn, 1);
+  }
+  tor_free(warn);
   tor_free(ext_source);
 }