summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--src/or/config.c2
-rw-r--r--src/or/hibernate.c12
3 files changed, 12 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index b0c97d4d1c..7d82d5d694 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -51,6 +51,9 @@ Changes in version 0.1.2.5-xxxx - 200?-??-??
o Controller bugfixes:
- Report the circuit number correctly in STREAM CLOSED events. (Bug
reported by Mike Perry.)
+ - Do not report bizarre values for results of accounting GETINFOs
+ when the last second's write or read exceeds the alloted bandwidth.
+ (Bug 329.)
Changes in version 0.1.2.4-alpha - 2006-12-03
diff --git a/src/or/config.c b/src/or/config.c
index 2afabe4800..5ab68a1d5d 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -1585,7 +1585,7 @@ static void
print_usage(void)
{
printf(
-"Copyright 2001-2005 Roger Dingledine, Nick Mathewson.\n\n"
+"Copyright 2001-2006 Roger Dingledine, Nick Mathewson.\n\n"
"tor -f <torrc> [args]\n"
"See man page for options, or http://tor.eff.org/ for documentation.\n");
}
diff --git a/src/or/hibernate.c b/src/or/hibernate.c
index c0e6cf1b58..5a48138a2c 100644
--- a/src/or/hibernate.c
+++ b/src/or/hibernate.c
@@ -949,10 +949,14 @@ getinfo_helper_accounting(control_connection_t *conn,
U64_PRINTF_ARG(n_bytes_written_in_interval));
} else if (!strcmp(question, "accounting/bytes-left")) {
uint64_t limit = get_options()->AccountingMax;
- *answer = tor_malloc(32);
- tor_snprintf(*answer, 32, U64_FORMAT" "U64_FORMAT,
- U64_PRINTF_ARG(limit - n_bytes_read_in_interval),
- U64_PRINTF_ARG(limit - n_bytes_written_in_interval));
+ uint64_t read_left = 0, write_left = 0;
+ if (n_bytes_read_in_interval < limit)
+ read_left = limit - n_bytes_read_in_interval;
+ if (n_bytes_written_in_interval < limit)
+ write_left = limit - n_bytes_written_in_interval;
+ *answer = tor_malloc(64);
+ tor_snprintf(*answer, 64, U64_FORMAT" "U64_FORMAT,
+ U64_PRINTF_ARG(read_left), U64_PRINTF_ARG(write_left));
} else if (!strcmp(question, "accounting/interval-start")) {
*answer = tor_malloc(ISO_TIME_LEN+1);
format_iso_time(*answer, interval_start_time);