Subject: [quicwg/base-drafts] Should receipt of multiple promises really be an error? (#2232)

From: ekr <[email-masked]>
Date: Thu, 20 Dec 2018 23:12:53 +0000 (UTC)

S 4.2.6.

```
A server MUST NOT use a Push ID that is larger than the client has provided in a
MAX_PUSH_ID frame ({{frame-max-push-id}}) and MUST NOT use the same Push ID in
multiple PUSH_PROMISE frames.  A client MUST treat receipt of a PUSH_PROMISE
that contains a larger Push ID than the client has advertised or a Push ID which
has already been promised as a connection error of type HTTP_MALFORMED_FRAME.
```

Note that this doesn't match the convention we are using in QUIC transport
that things are idempotent and duplicates are fine.

-- 
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/2232

---

From: Martin Thomson <[email-masked]>
Date: Thu, 20 Dec 2018 19:56:24 -0800

I think that this is OK being different due to the substrate being fundamentally different (i.e., these are reliably delivered as opposed to packets which are inherently unreliable).  But I'm happy to hear other arguments.

-- 
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/2232#issuecomment-449235866

---

From: ianswett <[email-masked]>
Date: Fri, 21 Dec 2018 16:24:37 +0000 (UTC)

I would agree.  The transport must repeat things so the application doesn't have 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/2232#issuecomment-449432767

---

From: Lucas Pardue <[email-masked]>
Date: Fri, 21 Dec 2018 14:04:17 -0800

This changed recently for the -17 draft as a result of the discussion on https://github.com/quicwg/base-drafts/issues/1864.

In short, the old language introduced a requirement on the client to keep track of all PUSH_PROMISE  frames with same Push ID in order to verify that the header block was identical across them all. This was pretty ugly. 

-17 introduce the DUPLICATE_PUSH frame, which achieves the same functionality as multiple promises, whithout the client overhead. And as a result, this requirement to specifically disallow mutliple PUSH_PROMISEs was brought it.

-- 
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/2232#issuecomment-449509656