mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-01 08:03:31 +01:00
Don't report empty bw-history lines in extrainfo
Some tor relays would report lines like these in their extrainfo documents: dirreq-write-history 2011-03-14 16:46:44 (900 s) This was confusing to some people who look at the stats. It would happen whenever a relay first starts up, or when a relay has dirport disabled. Change this so that lines without actual bw entries are omitted. Implements ticket 2497.
This commit is contained in:
parent
4cbbb92e7f
commit
c1927d7d5f
4
changes/ticket2497
Normal file
4
changes/ticket2497
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
o Minor features:
|
||||||
|
- Ensure that no empty [dirreq-](read|write)-history lines are added
|
||||||
|
to an extrainfo document. Implements ticket 2497.
|
||||||
|
|
@ -1524,10 +1524,15 @@ rep_hist_get_bandwidth_lines(void)
|
|||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
/* opt [dirreq-](read|write)-history yyyy-mm-dd HH:MM:SS (n s) n,n,n... */
|
/* opt [dirreq-](read|write)-history yyyy-mm-dd HH:MM:SS (n s) n,n,n... */
|
||||||
len = (67+21*NUM_TOTALS)*4;
|
/* The n,n,n part above. Largest representation of a uint64_t is 20 chars
|
||||||
|
* long, plus the comma. */
|
||||||
|
#define MAX_HIST_VALUE_LEN 21*NUM_TOTALS
|
||||||
|
len = (67+MAX_HIST_VALUE_LEN)*4;
|
||||||
buf = tor_malloc_zero(len);
|
buf = tor_malloc_zero(len);
|
||||||
cp = buf;
|
cp = buf;
|
||||||
for (r=0;r<4;++r) {
|
for (r=0;r<4;++r) {
|
||||||
|
char tmp[MAX_HIST_VALUE_LEN];
|
||||||
|
size_t slen;
|
||||||
switch (r) {
|
switch (r) {
|
||||||
case 0:
|
case 0:
|
||||||
b = write_array;
|
b = write_array;
|
||||||
@ -1547,11 +1552,16 @@ rep_hist_get_bandwidth_lines(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
tor_assert(b);
|
tor_assert(b);
|
||||||
|
slen = rep_hist_fill_bandwidth_history(tmp, MAX_HIST_VALUE_LEN, b);
|
||||||
|
/* If we don't have anything to write, skip to the next entry. */
|
||||||
|
if (slen == 0)
|
||||||
|
continue;
|
||||||
format_iso_time(t, b->next_period-NUM_SECS_BW_SUM_INTERVAL);
|
format_iso_time(t, b->next_period-NUM_SECS_BW_SUM_INTERVAL);
|
||||||
tor_snprintf(cp, len-(cp-buf), "%s %s (%d s) ",
|
tor_snprintf(cp, len-(cp-buf), "%s %s (%d s) ",
|
||||||
desc, t, NUM_SECS_BW_SUM_INTERVAL);
|
desc, t, NUM_SECS_BW_SUM_INTERVAL);
|
||||||
cp += strlen(cp);
|
cp += strlen(cp);
|
||||||
cp += rep_hist_fill_bandwidth_history(cp, len-(cp-buf), b);
|
strlcat(cp, tmp, len-(cp-buf));
|
||||||
|
cp += slen;
|
||||||
strlcat(cp, "\n", len-(cp-buf));
|
strlcat(cp, "\n", len-(cp-buf));
|
||||||
++cp;
|
++cp;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user