From f24638aa49bfd127c43f7ba12e91dd278b6f3264 Mon Sep 17 00:00:00 2001 From: teor Date: Thu, 2 Mar 2017 16:38:21 +1100 Subject: [PATCH] Log a message when a hidden service has fewer intro points than expected Closes ticket 21598. --- changes/feature21598 | 4 ++++ src/or/rendservice.c | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 changes/feature21598 diff --git a/changes/feature21598 b/changes/feature21598 new file mode 100644 index 0000000000..317ace4bcf --- /dev/null +++ b/changes/feature21598 @@ -0,0 +1,4 @@ + o Minor feature (hidden services): + - Log a message when a hidden service descriptor has fewer introduction + points than specified in HiddenServiceNumIntroductionPoints. + Closes ticket 21598. diff --git a/src/or/rendservice.c b/src/or/rendservice.c index cb87624df5..87a9ccfaed 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -1080,6 +1080,25 @@ rend_service_update_descriptor(rend_service_t *service) intro_svc->time_published = time(NULL); } } + + /* Check that we have the right number of intro points */ + unsigned int have_intro = (unsigned int)smartlist_len(d->intro_nodes); + if (have_intro != service->n_intro_points_wanted) { + int severity; + /* Getting less than we wanted or more than we're allowed is serious */ + if (have_intro < service->n_intro_points_wanted || + have_intro > NUM_INTRO_POINTS_MAX) { + severity = LOG_WARN; + } else { + /* Getting more than we wanted is weird, but less of a problem */ + severity = LOG_NOTICE; + } + log_fn(severity, LD_REND, "Hidden service %s wanted %d intro points, but " + "descriptor was updated with %d instead.", + service->service_id, + service->n_intro_points_wanted, have_intro); + rend_service_dump_stats(severity); + } } /* Allocate and return a string containing the path to file_name in -- 2.11.4.GIT