30001: Fix a race condition in test_dir_handle_get.c
commit367dd9cf0226c087d49225a20415e9a199d2d71f
authorNick Mathewson <nickm@torproject.org>
Wed, 3 Apr 2019 14:16:18 +0000 (3 10:16 -0400)
committerNick Mathewson <nickm@torproject.org>
Wed, 3 Apr 2019 14:16:18 +0000 (3 10:16 -0400)
tree76b352938759fb151dab2091497a91c74abb0b06
parentde76862fd6177acd8c5b801af4df73bfab5d98ac
30001: Fix a race condition in test_dir_handle_get.c

Previously we used time(NULL) to set the Expires: header in our HTTP
responses.  This made the actual contents of that header untestable,
since the unit tests have no good way to override time(), or to see
what time() was at the exact moment of the call to time() in
dircache.c.

This gave us a race in dir_handle_get/status_vote_next_bandwidth,
where the time() call in dircache.c got one value, and the call in
the tests got another value.

I'm applying our regular solution here: using approx_time() so that
the value stays the same between the code and the test.  Since
approx_time() is updated on every event callback, we shouldn't be
losing any accuracy here.

Fixes bug 30001. Bug introduced in fb4a40c32c4a7e5; not in any
released Tor.
changes/bug30001 [new file with mode: 0644]
src/feature/dircache/dircache.c
src/test/test_dir_handle_get.c