continue;
}
if (conn->state != AP_CONN_STATE_CIRCUIT_WAIT) {
- log_warn(LD_BUG, "%p is no longer in circuit_wait. Why is it on "
- "pending_entry_connections?", entry_conn);
+ log_warn(LD_BUG, "%p is no longer in circuit_wait. Its current state "
+ "is %s. Why is it on pending_entry_connections?",
+ entry_conn,
+ conn_state_to_string(conn->type, conn->state));
SMARTLIST_DEL_CURRENT(pending_entry_connections, entry_conn);
continue;
}
* call connection_ap_attach_pending().
*/
void
-connection_ap_mark_as_pending_circuit(entry_connection_t *entry_conn)
+connection_ap_mark_as_pending_circuit_(entry_connection_t *entry_conn,
+ const char *fname, int lineno)
{
connection_t *conn = ENTRY_TO_CONN(entry_conn);
tor_assert(conn->state == AP_CONN_STATE_CIRCUIT_WAIT);
if (PREDICT_UNLIKELY(smartlist_contains(pending_entry_connections,
entry_conn))) {
- log_warn(LD_BUG, "What?? pending_entry_connections already contains %p!",
- entry_conn);
+ log_warn(LD_BUG, "What?? pending_entry_connections already contains %p! "
+ "(called from %s:%d)",
+ entry_conn, fname, lineno);
return;
}
void connection_ap_expire_beginning(void);
void connection_ap_rescan_and_attach_pending(void);
void connection_ap_attach_pending(int retry);
-void connection_ap_mark_as_pending_circuit(entry_connection_t *entry_conn);
+void connection_ap_mark_as_pending_circuit_(entry_connection_t *entry_conn,
+ const char *file, int line);
+#define connection_ap_mark_as_pending_circuit(c) \
+ connection_ap_mark_as_pending_circuit_((c), __FILE__, __LINE__)
void connection_ap_fail_onehop(const char *failed_digest,
cpath_build_state_t *build_state);
void circuit_discard_optional_exit_enclaves(extend_info_t *info);