From f24638aa49bfd127c43f7ba12e91dd278b6f3264 Mon Sep 17 00:00:00 2001 From: teor Date: Thu, 2 Mar 2017 16:38:21 +1100 Subject: Log a message when a hidden service has fewer intro points than expected Closes ticket 21598. --- src/or/rendservice.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/or/rendservice.c') 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 -- cgit v1.2.3-54-g00ecf