hs-v2: Intro point circuit TIMEOUT failure is not reported
This was found while I was working on #32020 (moved).
For v2, we report a TIMEOUT circuit failure within circuit_about_to_free()
. The following code is the snippet on how we check if the circuit timed out:
int reason = circ->marked_for_close_reason;
int timed_out = (reason == END_CIRC_REASON_TIMEOUT);
However, in circuit_mark_for_close_()
, if the circuit is an origin one, which is the case for all HS client circuit, the marked_for_close_reason
is set to END_CIRC_REASON_NONE
so we don't send back that reason back within the destroy cell.
The fix is that we should be looking at marked_for_close_orig_reason
instead.
We need to backport this.