mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Set published_out for consensus cache entries in spooled_resource_estimate_size().
This patch ensures that the published_out output parameter is set to the current consensus cache entry's "valid after" field. See: https://bugs.torproject.org/22702
This commit is contained in:
committed by
Nick Mathewson
parent
32eba3d6aa
commit
07f2940b45
@@ -1840,3 +1840,21 @@ consensus_cache_entry_get_valid_until(const consensus_cache_entry_t *ent,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Read the valid after timestamp from the cached object <b>ent</b> into
|
||||
* *<b>out</b> and return 0, or return -1 if no such time was recorded. */
|
||||
int
|
||||
consensus_cache_entry_get_valid_after(const consensus_cache_entry_t *ent,
|
||||
time_t *out)
|
||||
{
|
||||
tor_assert(ent);
|
||||
tor_assert(out);
|
||||
|
||||
const char *s;
|
||||
s = consensus_cache_entry_get_value(ent, LABEL_VALID_AFTER);
|
||||
|
||||
if (s == NULL || parse_iso_time_nospace(s, out) < 0)
|
||||
return -1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,6 +44,9 @@ int consensus_cache_entry_get_fresh_until(
|
||||
int consensus_cache_entry_get_valid_until(
|
||||
const struct consensus_cache_entry_t *ent,
|
||||
time_t *out);
|
||||
int consensus_cache_entry_get_valid_after(
|
||||
const struct consensus_cache_entry_t *ent,
|
||||
time_t *out);
|
||||
|
||||
void consdiffmgr_rescan(void);
|
||||
int consdiffmgr_cleanup(void);
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "connection.h"
|
||||
#include "connection_or.h"
|
||||
#include "conscache.h"
|
||||
#include "consdiffmgr.h"
|
||||
#include "control.h"
|
||||
#include "directory.h"
|
||||
#include "dirserv.h"
|
||||
@@ -3518,6 +3519,11 @@ spooled_resource_estimate_size(const spooled_resource_t *spooled,
|
||||
} else {
|
||||
cached_dir_t *cached;
|
||||
if (spooled->consensus_cache_entry) {
|
||||
if (published_out) {
|
||||
consensus_cache_entry_get_valid_after(
|
||||
spooled->consensus_cache_entry, published_out);
|
||||
}
|
||||
|
||||
return spooled->cce_len;
|
||||
}
|
||||
if (spooled->cached_dir_ref) {
|
||||
|
||||
Reference in New Issue
Block a user