prop224: Make circuit prediction aware of v3 services

Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
David Goulet 2017-07-11 11:18:23 -04:00 committed by Nick Mathewson
parent 713eb08bc9
commit 6c3d525c36
3 changed files with 12 additions and 1 deletions

View File

@ -1116,7 +1116,7 @@ needs_exit_circuits(time_t now, int *needs_uptime, int *needs_capacity)
STATIC int STATIC int
needs_hs_server_circuits(int num_uptime_internal) needs_hs_server_circuits(int num_uptime_internal)
{ {
return (rend_num_services() && return ((rend_num_services() || hs_service_get_num_services()) &&
num_uptime_internal < SUFFICIENT_UPTIME_INTERNAL_HS_SERVERS && num_uptime_internal < SUFFICIENT_UPTIME_INTERNAL_HS_SERVERS &&
router_have_consensus_path() != CONSENSUS_PATH_UNKNOWN); router_have_consensus_path() != CONSENSUS_PATH_UNKNOWN);
} }

View File

@ -2390,6 +2390,16 @@ service_add_fnames_to_list(const hs_service_t *service, smartlist_t *list)
/* Public API */ /* Public API */
/* ========== */ /* ========== */
/* Return the number of service we have configured and usable. */
unsigned int
hs_service_get_num_services(void)
{
if (hs_service_map == NULL) {
return 0;
}
return HT_SIZE(hs_service_map);
}
/* Called once an introduction circuit is closed. If the circuit doesn't have /* Called once an introduction circuit is closed. If the circuit doesn't have
* a v3 identifier, it is ignored. */ * a v3 identifier, it is ignored. */
void void

View File

@ -253,6 +253,7 @@ void hs_service_free_all(void);
hs_service_t *hs_service_new(const or_options_t *options); hs_service_t *hs_service_new(const or_options_t *options);
void hs_service_free(hs_service_t *service); void hs_service_free(hs_service_t *service);
unsigned int hs_service_get_num_services(void);
void hs_service_stage_services(const smartlist_t *service_list); void hs_service_stage_services(const smartlist_t *service_list);
int hs_service_load_all_keys(void); int hs_service_load_all_keys(void);
void hs_service_lists_fnames_for_sandbox(smartlist_t *file_list, void hs_service_lists_fnames_for_sandbox(smartlist_t *file_list,