From 18d752e518c41f7190b77dc36d22150e89ffc115 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 20 Jul 2004 23:25:00 +0000 Subject: Correct "advance-time" logic svn:r2069 --- src/or/rephist.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/or/rephist.c b/src/or/rephist.c index b62359e16..5992a9581 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -378,10 +378,15 @@ static INLINE void advance_obs(bw_array_t *b) { /** Add 'n' bytes to the number of bytes in b for second 'when'. */ static INLINE void add_obs(bw_array_t *b, time_t when, int n) { - /* If we're currently adding observations for an earlier second than 'when', - * advance 'when' by an appropriate number of seconds. */ - while (whencur_obs_time) + /* Don't record data in the past. */ + if (whencur_obs_time) + return; + /* If we're currently adding observations for an earlier second than + * 'when', advance b->cur_obs_time and b->cur_obs_idx by an + * appropriate number of seconds, and do all the other housekeeping */ + while (when>b->cur_obs_time) advance_obs(b); + b->obs[b->cur_obs_idx] += n; } -- cgit v1.2.3