A few (potentially editorial) questions about FINAL_DATA that might be worth clarifying in the document text:
- What happens if I get duplicate FINAL_DATA. We say:
After sending a FINAL_DATA capsule, an endpoint MUST NOT send any more DATA or FINAL_DATA capsules on this data stream. (See Section 3.4 for related requirements.)
But there is nothing that says what to do as a receiver if you receive a second FINAL_DATA. Is that an error? Do you ignore it?
- HTTP stream FIN, but no FINAL_DATA. We say:
When the receive stream is closed abruptly or without a FINAL_DATA capsule received, the endpoint SHOULD send a TCP RST if the TCP subsystem permits it.
Given that this potentially means data is truncated, should we upgrade this to a "MUST, if", rather than a "SHOULD, if"? It'd be nice if this signal were as likely as possible to propagate.
- FINAL_DATA, but no HTTP stream closure.
We say that an endpoint "MUST close its send stream", but what do I do as a receiver if I get FINAL_DATA but the HTTP stream stays open? Should I have a timeout? Is that an error? Do I just ignore it and decide the other endpoint is taking up some of its stream flow control credit, so it probably shouldn't do that, but it's fine if it does (I like this last one, personally)?
A few (potentially editorial) questions about FINAL_DATA that might be worth clarifying in the document text:
But there is nothing that says what to do as a receiver if you receive a second FINAL_DATA. Is that an error? Do you ignore it?
Given that this potentially means data is truncated, should we upgrade this to a "MUST, if", rather than a "SHOULD, if"? It'd be nice if this signal were as likely as possible to propagate.
We say that an endpoint "MUST close its send stream", but what do I do as a receiver if I get FINAL_DATA but the HTTP stream stays open? Should I have a timeout? Is that an error? Do I just ignore it and decide the other endpoint is taking up some of its stream flow control credit, so it probably shouldn't do that, but it's fine if it does (I like this last one, personally)?