From 184bd2258673f9e33e43cfc1264da78f74ad78a4 Mon Sep 17 00:00:00 2001 From: David Goulet Date: Tue, 12 Sep 2017 09:43:34 -0400 Subject: [PATCH 1/2] hs: Fix digest256 to base64 issue in a log statement Part of #23480. Signed-off-by: David Goulet --- src/or/hs_cache.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/or/hs_cache.c b/src/or/hs_cache.c index 78e2adacf6..7f2a9cbbb7 100644 --- a/src/or/hs_cache.c +++ b/src/or/hs_cache.c @@ -234,8 +234,7 @@ cache_clean_v3_as_dir(time_t now, time_t global_cutoff) /* Logging. */ { char key_b64[BASE64_DIGEST256_LEN + 1]; - base64_encode(key_b64, sizeof(key_b64), (const char *) key, - DIGEST256_LEN, 0); + digest256_to_base64(key_b64, (const char *) key); log_info(LD_REND, "Removing v3 descriptor '%s' from HSDir cache", safe_str_client(key_b64)); } @@ -655,8 +654,7 @@ cache_clean_v3_as_client(time_t now) /* Logging. */ { char key_b64[BASE64_DIGEST256_LEN + 1]; - base64_encode(key_b64, sizeof(key_b64), (const char *) key, - DIGEST256_LEN, 0); + digest256_to_base64(key_b64, (const char *) key); log_info(LD_REND, "Removing hidden service v3 descriptor '%s' " "from client cache", safe_str_client(key_b64)); From 98953b1fc29a693aa797989402f7205523448408 Mon Sep 17 00:00:00 2001 From: David Goulet Date: Tue, 12 Sep 2017 11:02:40 -0400 Subject: [PATCH 2/2] hs-v3: Rate limit some log statements Also fix an indentation issue. Closes #23480 Signed-off-by: David Goulet --- src/or/hs_service.c | 10 ++++++++-- src/or/nodelist.c | 6 ++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/or/hs_service.c b/src/or/hs_service.c index 5759aa8127..a8883e03a0 100644 --- a/src/or/hs_service.c +++ b/src/or/hs_service.c @@ -2978,8 +2978,14 @@ hs_service_lists_fnames_for_sandbox(smartlist_t *file_list, void hs_service_dir_info_changed(void) { - log_info(LD_REND, "New dirinfo arrived: consider reuploading descriptor"); - consider_republishing_hs_descriptors = 1; + if (hs_service_get_num_services() > 0) { + /* New directory information usually goes every consensus so rate limit + * every 30 minutes to not be too conservative. */ + static struct ratelim_t dir_info_changed_ratelim = RATELIM_INIT(30 * 60); + log_fn_ratelim(&dir_info_changed_ratelim, LOG_INFO, LD_REND, + "New dirinfo arrived: consider reuploading descriptor"); + consider_republishing_hs_descriptors = 1; + } } /* Called when we get an INTRODUCE2 cell on the circ. Respond to the cell and diff --git a/src/or/nodelist.c b/src/or/nodelist.c index 01a0e9e856..df735a9d24 100644 --- a/src/or/nodelist.c +++ b/src/or/nodelist.c @@ -300,14 +300,16 @@ node_set_hsdir_index(node_t *node, const networkstatus_t *ns) tor_assert(ns); if (!networkstatus_is_live(ns, now)) { - log_info(LD_GENERAL, "Not setting hsdir index with a non-live consensus."); + static struct ratelim_t live_consensus_ratelim = RATELIM_INIT(30 * 60); + log_fn_ratelim(&live_consensus_ratelim, LOG_INFO, LD_GENERAL, + "Not setting hsdir index with a non-live consensus."); goto done; } node_identity_pk = node_get_ed25519_id(node); if (node_identity_pk == NULL) { log_debug(LD_GENERAL, "ed25519 identity public key not found when " - "trying to build the hsdir indexes for node %s", + "trying to build the hsdir indexes for node %s", node_describe(node)); goto done; }