Send TRUNCATED backward on an non-error closing OR circuit
With #40623 (closed), we decided to send back a DESTROY
cell instead of a TRUNCATED
. However, there is this undesirable effect of this that if data is in-flight to the client, they might get a DESTROY
before getting it all.
One example here would be if an HSDir
would send the descriptor and then immediately close the circuit then it is likely that the whole descriptor might not fully arrive.
So one idea here is that we could simply send a TRUNCATED
on an OR circuit (non origin) for which the reason for close is "finished" as in not an error. In our example above, the HSDir would send that cell and wait for a DESTROY
to close the circuit.
In case of errors, we just immediately send a DESTROY
.