[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [tor] 07/10: Bug 40810: Improve validation checks to ignore 0-RTT legs



This is an automated email from the git hooks/post-receive script.

dgoulet pushed a commit to branch main
in repository tor.

commit dbd37c0e7bb872208d4282d58f5b66d2fced781f
Author: Mike Perry <mikeperry-git@xxxxxxxxxxxxxx>
AuthorDate: Sat Jun 10 16:00:56 2023 +0000

    Bug 40810: Improve validation checks to ignore 0-RTT legs
    
    Also add calls to dump the legs of a conflux set if we have too many
---
 src/core/or/conflux_util.c | 42 ++++++++++++++++++++++++++++++------------
 1 file changed, 30 insertions(+), 12 deletions(-)

diff --git a/src/core/or/conflux_util.c b/src/core/or/conflux_util.c
index 855d477428..589db41e83 100644
--- a/src/core/or/conflux_util.c
+++ b/src/core/or/conflux_util.c
@@ -20,6 +20,7 @@
 #include "core/or/conflux.h"
 #include "core/or/conflux_params.h"
 #include "core/or/conflux_util.h"
+#include "core/or/conflux_pool.h"
 #include "core/or/conflux_st.h"
 #include "lib/time/compat_time.h"
 #include "app/config/config.h"
@@ -372,22 +373,39 @@ void
 conflux_validate_legs(const conflux_t *cfx)
 {
   tor_assert(cfx);
-  // TODO-329-UDP: Eventually we want to allow three legs for the
-  // exit case, to allow reconnection of legs to hit an RTT target.
-  // For now, this validation helps find bugs.
-  if (BUG(smartlist_len(cfx->legs) > conflux_params_get_num_legs_set())) {
-    log_warn(LD_BUG, "Number of legs is above maximum of %d allowed: %d\n",
-             conflux_params_get_num_legs_set(), smartlist_len(cfx->legs));
-  }
-
+  bool is_client = false;
+  int num_legs = 0;
   CONFLUX_FOR_EACH_LEG_BEGIN(cfx, leg) {
-    /* Ensure we have no pending nonce on the circ */
-    tor_assert_nonfatal(leg->circ->conflux_pending_nonce == NULL);
-    tor_assert_nonfatal(leg->circ->conflux != NULL);
-
     if (CIRCUIT_IS_ORIGIN(leg->circ)) {
       tor_assert_nonfatal(leg->circ->purpose ==
                           CIRCUIT_PURPOSE_CONFLUX_LINKED);
+      is_client = true;
+    }
+
+    /* Ensure we have no pending nonce on the circ */
+    if (BUG(leg->circ->conflux_pending_nonce != NULL)) {
+      conflux_log_set(cfx, is_client);
+      continue;
+    }
+
+    /* Ensure we have a conflux object */
+    if (BUG(leg->circ->conflux == NULL)) {
+      conflux_log_set(cfx, is_client);
+      continue;
+    }
+
+    /* Only count legs that have a valid RTT */
+    if (leg->circ_rtts_usec > 0) {
+      num_legs++;
     }
   } CONFLUX_FOR_EACH_LEG_END(leg);
+
+  // TODO-329-UDP: Eventually we want to allow three legs for the
+  // exit case, to allow reconnection of legs to hit an RTT target.
+  // For now, this validation helps find bugs.
+  if (BUG(num_legs > conflux_params_get_num_legs_set())) {
+    log_warn(LD_BUG, "Number of legs is above maximum of %d allowed: %d\n",
+             conflux_params_get_num_legs_set(), smartlist_len(cfx->legs));
+    conflux_log_set(cfx, is_client);
+  }
 }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits