diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-04-26 10:24:33 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-04-26 12:01:48 -0400 |
commit | 7cbc44eeb19831bc467f8e1b87062ed1c87934d5 (patch) | |
tree | 69e87347182548124e6a00afe450b4bb5ac134b5 | |
parent | 5e395ba2c2bf041cacf85e6ad38cb39ea8ae7419 (diff) | |
download | tor-7cbc44eeb19831bc467f8e1b87062ed1c87934d5.tar.gz tor-7cbc44eeb19831bc467f8e1b87062ed1c87934d5.zip |
Remove the "cached gettimeofday" logic.
Previously were using this value to have a cheap highish-resolution
timer. But we were only using it in one place, and current dogma is
to use monotime_coarse_t for this kind of thing.
-rw-r--r-- | changes/ticket25927.2 | 5 | ||||
-rw-r--r-- | src/common/compat_libevent.c | 47 | ||||
-rw-r--r-- | src/common/compat_libevent.h | 3 | ||||
-rw-r--r-- | src/or/connection.c | 2 |
4 files changed, 6 insertions, 51 deletions
diff --git a/changes/ticket25927.2 b/changes/ticket25927.2 new file mode 100644 index 0000000000..9acb4aaf6f --- /dev/null +++ b/changes/ticket25927.2 @@ -0,0 +1,5 @@ + o Code simplification and refactoring: + - Remove our previous logic for "cached gettimeofday()" -- our coarse + monotonic timers are fast enough for this purpose, and far less + error-prone. Implements part of ticket 25927. + diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c index 9936c0aac4..707efe3892 100644 --- a/src/common/compat_libevent.c +++ b/src/common/compat_libevent.c @@ -494,51 +494,7 @@ tor_libevent_exit_loop_after_callback(struct event_base *base) event_base_loopbreak(base); } -#if defined(LIBEVENT_VERSION_NUMBER) && \ - LIBEVENT_VERSION_NUMBER >= V(2,1,1) && \ - !defined(TOR_UNIT_TESTS) -void -tor_gettimeofday_cached(struct timeval *tv) -{ - event_base_gettimeofday_cached(the_event_base, tv); -} -void -tor_gettimeofday_cache_clear(void) -{ - event_base_update_cache_time(the_event_base); -} -#else /* !(defined(LIBEVENT_VERSION_NUMBER) && ...) */ -/** Cache the current hi-res time; the cache gets reset when libevent - * calls us. */ -static struct timeval cached_time_hires = {0, 0}; - -/** Return a fairly recent view of the current time. */ -void -tor_gettimeofday_cached(struct timeval *tv) -{ - if (cached_time_hires.tv_sec == 0) { - tor_gettimeofday(&cached_time_hires); - } - *tv = cached_time_hires; -} - -/** Reset the cached view of the current time, so that the next time we try - * to learn it, we will get an up-to-date value. */ -void -tor_gettimeofday_cache_clear(void) -{ - cached_time_hires.tv_sec = 0; -} - -#ifdef TOR_UNIT_TESTS -/** For testing: force-update the cached time to a given value. */ -void -tor_gettimeofday_cache_set(const struct timeval *tv) -{ - tor_assert(tv); - memcpy(&cached_time_hires, tv, sizeof(*tv)); -} - +#if defined(TOR_UNIT_TESTS) /** For testing: called post-fork to make libevent reinitialize * kernel structures. */ void @@ -548,5 +504,4 @@ tor_libevent_postfork(void) tor_assert(r == 0); } #endif /* defined(TOR_UNIT_TESTS) */ -#endif /* defined(LIBEVENT_VERSION_NUMBER) && ... */ diff --git a/src/common/compat_libevent.h b/src/common/compat_libevent.h index 29c6ad375a..e2747860a9 100644 --- a/src/common/compat_libevent.h +++ b/src/common/compat_libevent.h @@ -68,10 +68,7 @@ void tor_libevent_free_all(void); int tor_init_libevent_rng(void); -void tor_gettimeofday_cached(struct timeval *tv); -void tor_gettimeofday_cache_clear(void); #ifdef TOR_UNIT_TESTS -void tor_gettimeofday_cache_set(const struct timeval *tv); void tor_libevent_postfork(void); #endif diff --git a/src/or/connection.c b/src/or/connection.c index de0f0485b0..c2673ade16 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -3440,7 +3440,6 @@ connection_handle_read(connection_t *conn) { int res; - tor_gettimeofday_cache_clear(); res = connection_handle_read_impl(conn); return res; } @@ -3983,7 +3982,6 @@ int connection_handle_write(connection_t *conn, int force) { int res; - tor_gettimeofday_cache_clear(); conn->in_connection_handle_write = 1; res = connection_handle_write_impl(conn, force); conn->in_connection_handle_write = 0; |