Commit e6be486a authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

More emergency-check code for un-removed pending entry conns

This might also be what #17752 needs.
parent 24fcb6ad
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -678,6 +678,13 @@ connection_free,(connection_t *conn))
  if (conn->type == CONN_TYPE_CONTROL) {
    connection_control_closed(TO_CONTROL_CONN(conn));
  }
#if 1
  /* DEBUGGING */
  if (conn->type == CONN_TYPE_AP) {
    connection_ap_warn_and_unmark_if_pending_circ(TO_ENTRY_CONN(conn),
                                                  "connection_free");
  }
#endif
  connection_unregister_events(conn);
  connection_free_(conn);
}
+16 −5
Original line number Diff line number Diff line
@@ -566,11 +566,9 @@ connection_ap_about_to_close(entry_connection_t *entry_conn)
#if 1
  /* Check to make sure that this isn't in pending_entry_connections if it
   * didn't actually belong there. */
  if (TO_CONN(edge_conn)->type == CONN_TYPE_AP &&
      smartlist_contains(pending_entry_connections, entry_conn)) {
    log_warn(LD_BUG, "What was %p doing in pending_entry_connections???",
             entry_conn);
    smartlist_remove(pending_entry_connections, entry_conn);
  if (TO_CONN(edge_conn)->type == CONN_TYPE_AP) {
    connection_ap_warn_and_unmark_if_pending_circ(entry_conn,
                                                  "about_to_close");
  }
#endif

@@ -903,6 +901,19 @@ connection_ap_mark_as_non_pending_circuit(entry_connection_t *entry_conn)
  smartlist_remove(pending_entry_connections, entry_conn);
}

/** DOCDOC */
void
connection_ap_warn_and_unmark_if_pending_circ(entry_connection_t *entry_conn,
                                              const char *where)
{
  if (pending_entry_connections &&
      smartlist_contains(pending_entry_connections, entry_conn)) {
    log_warn(LD_BUG, "What was %p doing in pending_entry_connections in %s?",
             entry_conn, where);
    connection_ap_mark_as_non_pending_circuit(entry_conn);
  }
}

/** Tell any AP streams that are waiting for a one-hop tunnel to
 * <b>failed_digest</b> that they are going to fail. */
/* XXX024 We should get rid of this function, and instead attach
+4 −0
Original line number Diff line number Diff line
@@ -115,6 +115,10 @@ streamid_t get_unique_stream_id_by_circ(origin_circuit_t *circ);

void connection_edge_free_all(void);

void connection_ap_warn_and_unmark_if_pending_circ(
                                             entry_connection_t *entry_conn,
                                             const char *where);

/** @name Begin-cell flags
 *
 * These flags are used in RELAY_BEGIN cells to change the default behavior