]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Stop logging a BUG() warning when tor is waiting for exit descriptors
authorteor <teor@torproject.org>
Tue, 5 Mar 2019 02:53:14 +0000 (12:53 +1000)
committerNick Mathewson <nickm@torproject.org>
Fri, 15 Mar 2019 12:57:28 +0000 (08:57 -0400)
Fixes bug 28656; bugfix on 0.3.5.1-alpha.

changes/bug28656 [new file with mode: 0644]
src/feature/nodelist/nodelist.c

diff --git a/changes/bug28656 b/changes/bug28656
new file mode 100644 (file)
index 0000000..d3a13d1
--- /dev/null
@@ -0,0 +1,3 @@
+  o Minor bugfixes (logging):
+    - Stop logging a BUG() warning when tor is waiting for exit descriptors.
+      Fixes bug 28656; bugfix on 0.3.5.1-alpha.
index 935ac78403fd8caf867881ba8065cc1827ff03c9..99d7f746a8d3274ef7674758ad9f479b5b697852 100644 (file)
@@ -2449,12 +2449,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;
     }
   }