]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
When a channel hasn't seen client or cell log differently
authorGuinness <guinness@crans.org>
Wed, 2 Dec 2020 12:17:20 +0000 (13:17 +0100)
committerGuinness <guinness@crans.org>
Wed, 2 Dec 2020 12:17:20 +0000 (13:17 +0100)
The time diffs were misleading and unpretty when a channel has not seen
a client, a cell or transmitted a cell.
This commit adds some prettier messages.

Fixes #40182

changes/ticket40182 [new file with mode: 0644]
src/core/or/channel.c

diff --git a/changes/ticket40182 b/changes/ticket40182
new file mode 100644 (file)
index 0000000..0accd7d
--- /dev/null
@@ -0,0 +1,4 @@
+  o Minor features(logging):
+   - If a channel has never received, transmitted a cell or seen a client,
+   do not calculate time diffs against 1/1/1970 but log another prettier message
+   Fixes 40182
index 26c93d169f9cacace8aa8e2ea1748959cfbcefdc..cf9edef902bcfe08b42a4ab8621c628e5933c023 100644 (file)
@@ -2629,24 +2629,40 @@ channel_dump_statistics, (channel_t *chan, int severity))
          circuitmux_num_circuits(chan->cmux) : 0);
 
   /* Describe timestamps */
-  tor_log(severity, LD_GENERAL,
-      " * Channel %"PRIu64 " was last used by a "
-      "client at %"PRIu64 " (%"PRIu64 " seconds ago)",
-      (chan->global_identifier),
-      (uint64_t)(chan->timestamp_client),
-      (uint64_t)(now - chan->timestamp_client));
-  tor_log(severity, LD_GENERAL,
-      " * Channel %"PRIu64 " last received a cell "
-      "at %"PRIu64 " (%"PRIu64 " seconds ago)",
-      (chan->global_identifier),
-      (uint64_t)(chan->timestamp_recv),
-      (uint64_t)(now - chan->timestamp_recv));
-  tor_log(severity, LD_GENERAL,
-      " * Channel %"PRIu64 " last transmitted a cell "
-      "at %"PRIu64 " (%"PRIu64 " seconds ago)",
-      (chan->global_identifier),
-      (uint64_t)(chan->timestamp_xmit),
-      (uint64_t)(now - chan->timestamp_xmit));
+  if (chan->timestamp_client == 0) {
+      tor_log(severity, LD_GENERAL,
+              " * Channel %"PRIu64 " was never used by a "
+             "client", (chan->global_identifier));
+  } else {
+      tor_log(severity, LD_GENERAL,
+              " * Channel %"PRIu64 " was last used by a "
+              "client at %"PRIu64 " (%"PRIu64 " seconds ago)",
+              (chan->global_identifier),
+              (uint64_t)(chan->timestamp_client),
+              (uint64_t)(now - chan->timestamp_client));
+  }
+  if (chan->timestamp_recv == 0) {
+      tor_log(severity, LD_GENERAL,
+              " * Channel %"PRIu64 " never received a cell", (chan->global_identifier));
+  } else {
+      tor_log(severity, LD_GENERAL,
+              " * Channel %"PRIu64 " last received a cell "
+              "at %"PRIu64 " (%"PRIu64 " seconds ago)",
+              (chan->global_identifier),
+              (uint64_t)(chan->timestamp_recv),
+              (uint64_t)(now - chan->timestamp_recv));
+  }
+  if (chan->timestamp_xmit == 0) {
+      tor_log(severity, LD_GENERAL,
+              " * Channel %"PRIu64 " never transmitted a cell",(chan->global_identifier));
+  } else {
+      tor_log(severity, LD_GENERAL,
+              " * Channel %"PRIu64 " last transmitted a cell "
+              "at %"PRIu64 " (%"PRIu64 " seconds ago)",
+              (chan->global_identifier),
+              (uint64_t)(chan->timestamp_xmit),
+              (uint64_t)(now - chan->timestamp_xmit));
+  }
 
   /* Describe counters and rates */
   tor_log(severity, LD_GENERAL,