Hello!
> blunt instrument for reporting it, because it causes loss of data going
> in the other direction.
First. Data, which reached the host are not lost.
Second. TCP may lose this data because this data did not reach host
before reset arrived, indeed.
After the second we arrive at the next: if you send to dead pipe,
or do not read some remnant of data before closing, it is _HARD_ bug
in your application or in protocol.
Do you understand what hard bug is? It is when further behaviour
is unpredictable and the state cannot be recovered. Essentially,
it is thing which exceptions and fatal signals are invented for. 8)
Alexey