Subject: [quicwg/base-drafts] Http cancel race with stop sending (#1558)

From: Subodh Iyengar <[email-masked]>
Date: Sat, 14 Jul 2018 07:46:11 -0700

In the section on stop sending we say

Servers MUST NOT abort a response in progress as a result of receiving a solicited RST_STREAM.

However a client may have sent a RST before the server sent stop sending. In addition the client may have also sent a http request canceled error code which indicates that it is not interested the response.

It seems like the MUST seems harsh here and it could be a SHOULD with exceptions 

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1558

---

From: Martin Thomson <[email-masked]>
Date: Sat, 14 Jul 2018 14:06:41 -0700

If a client wants the server to stop sending the response, it can use STOP_SENDING.  But SHOULD NOT is probably OK here.  The server can stop sending if it wants to.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1558#issuecomment-405049906

---

From: Subodh Iyengar <[email-masked]>
Date: Sat, 14 Jul 2018 15:01:41 -0700

Ya it could use stop sending but it’s possible that the client just doesn’t care anymore and sends a cancel which races with the servers stop sending

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1558#issuecomment-405052732

---

From: Mike Bishop <[email-masked]>
Date: Mon, 30 Jul 2018 14:45:43 -0700

If the client wants to abort the request without finishing it, that would definitely be a RST_STREAM.  If the client doesn't care about the response to a request it already sent, that would be STOP_SENDING.  I suppose it can be SHOULD, or perhaps clarified to say "a RST_STREAM with the STOPPING error code".

However, in a real implementation, I don't think the server will even notice any RST_STREAM regardless of error code -- the STOP_SENDING from the server was triggered in the first place because the server closed its read stream, and it won't see the RST_STREAM unless it tries to read from that stream further, which would probably be considered invalid anyway.  So unless and until something happens to the server's write stream -- which would be a STOP_SENDING from the client -- it will continue merrily sending its response regardless of what the client does to the request.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1558#issuecomment-409022158