/* prevent double-remove. */
pendconn->state = EXIT_CONN_STATE_RESOLVEFAILED;
if (pendconn->purpose == EXIT_PURPOSE_CONNECT) {
- /*XXXX can we safely raise the detach here to happen after we
- * send the end cell? */
+ connection_edge_end(pendconn, END_STREAM_REASON_RESOLVEFAILED, pendconn->cpath_layer);
+ /* This detach must happen after we send the end cell. */
circuit_detach_stream(circuit_get_by_conn(pendconn), pendconn);
- connection_edge_end(pendconn, END_STREAM_REASON_MISC, pendconn->cpath_layer);
} else {
send_resolved_cell(pendconn, RESOLVED_TYPE_ERROR);
/* This detach must happen after we send the resolved cell. */