When a channel hasn't seen client or cell log differently

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
This commit is contained in:
Guinness 2020-12-02 13:17:20 +01:00
parent 7640631539
commit 399025dc5f
No known key found for this signature in database
GPG key ID: 452A734DA611FA7C
2 changed files with 38 additions and 18 deletions

4
changes/ticket40182 Normal file
View file

@ -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

View file

@ -2629,24 +2629,40 @@ channel_dump_statistics, (channel_t *chan, int severity))
circuitmux_num_circuits(chan->cmux) : 0); circuitmux_num_circuits(chan->cmux) : 0);
/* Describe timestamps */ /* Describe timestamps */
tor_log(severity, LD_GENERAL, if (chan->timestamp_client == 0) {
" * Channel %"PRIu64 " was last used by a " tor_log(severity, LD_GENERAL,
"client at %"PRIu64 " (%"PRIu64 " seconds ago)", " * Channel %"PRIu64 " was never used by a "
(chan->global_identifier), "client", (chan->global_identifier));
(uint64_t)(chan->timestamp_client), } else {
(uint64_t)(now - chan->timestamp_client)); tor_log(severity, LD_GENERAL,
tor_log(severity, LD_GENERAL, " * Channel %"PRIu64 " was last used by a "
" * Channel %"PRIu64 " last received a cell " "client at %"PRIu64 " (%"PRIu64 " seconds ago)",
"at %"PRIu64 " (%"PRIu64 " seconds ago)", (chan->global_identifier),
(chan->global_identifier), (uint64_t)(chan->timestamp_client),
(uint64_t)(chan->timestamp_recv), (uint64_t)(now - chan->timestamp_client));
(uint64_t)(now - chan->timestamp_recv)); }
tor_log(severity, LD_GENERAL, if (chan->timestamp_recv == 0) {
" * Channel %"PRIu64 " last transmitted a cell " tor_log(severity, LD_GENERAL,
"at %"PRIu64 " (%"PRIu64 " seconds ago)", " * Channel %"PRIu64 " never received a cell", (chan->global_identifier));
(chan->global_identifier), } else {
(uint64_t)(chan->timestamp_xmit), tor_log(severity, LD_GENERAL,
(uint64_t)(now - chan->timestamp_xmit)); " * 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 */ /* Describe counters and rates */
tor_log(severity, LD_GENERAL, tor_log(severity, LD_GENERAL,