]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Bug #40842: Additional diagnostics
authorMike Perry <mikeperry-git@torproject.org>
Fri, 25 Aug 2023 22:43:14 +0000 (22:43 +0000)
committerMike Perry <mikeperry-git@torproject.org>
Fri, 25 Aug 2023 22:53:07 +0000 (22:53 +0000)
Just in case there are other instances hiding in the maze.

src/core/or/conflux_util.c
src/core/or/relay.c

index 9d1a4bd3083b53e96753ef0eb82897c587dbab8e..31ab983f8f393d2523ee4a154d19297000c60af7 100644 (file)
@@ -49,6 +49,20 @@ circuit_get_package_window(circuit_t *circ,
 
     /* If conflux has no circuit to send on, the package window is 0. */
     if (!circ) {
+      /* Bug #40842: Additional diagnostics for other potential cases */
+      if (!orig_circ->conflux->curr_leg) {
+        if (orig_circ->marked_for_close) {
+          log_warn(LD_BUG, "Conflux has no circuit to send on. "
+                           "Circuit %p idx %d marked at line %s:%d",
+                           orig_circ, orig_circ->global_circuitlist_idx,
+                           orig_circ->marked_for_close_file,
+                           orig_circ->marked_for_close);
+        } else {
+          log_warn(LD_BUG, "Conflux has no circuit to send on. "
+                           "Circuit %p idx %d not marked for close.",
+                           orig_circ, orig_circ->global_circuitlist_idx);
+        }
+      }
       return 0;
     }
 
@@ -83,6 +97,10 @@ conflux_can_send(conflux_t *cfx)
   if (send_circ) {
     return true;
   } else {
+    if (BUG(!cfx->in_full_teardown && !cfx->curr_leg)) {
+      log_fn(LOG_WARN,
+             LD_BUG, "Conflux has no current circuit to send on. ");
+    }
     return false;
   }
 }
index 87f805368659905ef8d348cc6ded7a13bd634ebc..6abe802355e0f5ace42a74bb573d0479d138a022 100644 (file)
@@ -641,6 +641,8 @@ relay_send_command_from_edge_,(streamid_t stream_id, circuit_t *orig_circ,
     if (BUG(!circ)) {
       log_warn(LD_BUG, "No circuit to send for conflux for relay command %d, "
                "called from %s:%d", relay_command, filename, lineno);
+      conflux_log_set(LOG_WARN, orig_circ->conflux,
+                       CIRCUIT_IS_ORIGIN(orig_circ));
       circ = orig_circ;
     } else {
       /* Conflux circuits always send multiplexed relay commands to