diff options
author | Nick Mathewson <nickm@torproject.org> | 2019-03-15 08:59:30 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2019-03-15 08:59:30 -0400 |
commit | 677384e276a68993e3f48b949ef47f3a5cf1e324 (patch) | |
tree | 6835732c9a352f2493dd22aa6b347583b3d241cc /src/feature/nodelist | |
parent | 1cffacdaf5eac1929b47e827c3654a7e97b76687 (diff) | |
parent | 1547fd99a68cb22410ed0842267fb0a1f1de925f (diff) | |
download | tor-677384e276a68993e3f48b949ef47f3a5cf1e324.tar.gz tor-677384e276a68993e3f48b949ef47f3a5cf1e324.zip |
Merge branch 'maint-0.4.0'
Diffstat (limited to 'src/feature/nodelist')
-rw-r--r-- | src/feature/nodelist/nodelist.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/feature/nodelist/nodelist.c b/src/feature/nodelist/nodelist.c index 32ee2677bb..8371d787fd 100644 --- a/src/feature/nodelist/nodelist.c +++ b/src/feature/nodelist/nodelist.c @@ -2589,12 +2589,18 @@ compute_frac_paths_available(const networkstatus_t *consensus, f_exit = f_myexit; } - /* if the consensus has no exits, we can only build onion service paths, - * which are G - M - M. So use the middle fraction for the exit fraction. */ + /* If the consensus has no exits that pass flag, descriptor, and policy + * checks, we can only build onion service paths, which are G - M - M. */ if (router_have_consensus_path() != CONSENSUS_PATH_EXIT) { - /* If there are no exits in the consensus, then f_exit is always 0, so - * it is safe to replace f_exit with f_mid. */ - if (!BUG(f_exit > 0.0)) { + /* If the exit bandwidth weight fraction is not zero, we need to wait for + * descriptors for those exits. (The bandwidth weight fraction does not + * check for descriptors.) + * If the exit bandwidth fraction is zero, there are no exits in the + * consensus at all. So it is safe to replace f_exit with f_mid. + * + * f_exit is non-negative, but some compilers complain about float and == + */ + if (f_exit <= 0.0) { f_exit = f_mid; } } |