Subject: Re: [httpwg/http-extensions] Explain interactions with Alt-Svc (#348)

From: HTTP issue updates <[email-masked]>
Date: Mon, 22 May 2017 23:10:42 -0700

mnot requested changes on this pull request.

> @@ -153,6 +153,16 @@ The Origin Set is also affected by the 421 (Misdirected Request) response status
 MUST create the ASCII serialisation of the corresponding request's origin (as per {{!RFC6454}},
 Section 6.2) and remove it from the connection's Origin Set, if present.
 
+Note:
+
+: A server that acts as an alternative service {{?RFC7838}} might remove the origin that a
+  client creates the connection for by sending an ORIGIN frame.  The single value that is in the

ORIGIN doesn't specify how to remove a member of the origin set.

> @@ -153,6 +153,16 @@ The Origin Set is also affected by the 421 (Misdirected Request) response status
 MUST create the ASCII serialisation of the corresponding request's origin (as per {{!RFC6454}},
 Section 6.2) and remove it from the connection's Origin Set, if present.
 
+Note:
+
+: A server that acts as an alternative service {{?RFC7838}} might remove the origin that a
+  client creates the connection for by sending an ORIGIN frame.  The single value that is in the
+  newly-initialized Origin Set will contain the port of the alternative service rather than that
+  of the origin.  For instance, a client making requests for "https://example.com" that is
+  directed to an alternative at ("h2", "x.example.net", "8443") will seed the origin set with
+  "https://example.com:8443".  This problem can be avoided by explicitly including an origin
+  with the correct port in the ORIGIN frame.
+

I'm not sure this is helping; what are you trying to accomplish?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/httpwg/http-extensions/pull/348#pullrequestreview-39649535

---

From: HTTP issue updates <[email-masked]>
Date: Tue, 23 May 2017 01:09:51 -0700

martinthomson commented on this pull request.

+Note:
+

It doesn't remove it from the origin set, that's unfortunate phrasing.  It does invalidate the connection for use with the origin.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/httpwg/http-extensions/pull/348#discussion_r117925877

---

From: HTTP issue updates <[email-masked]>
Date: Tue, 23 May 2017 01:12:51 -0700

+Note:
+

I thought that the example was illustrative: if you Alt-Svc with a different port, then send ORIGIN you get in a bind unless you include the original origin in the ORIGIN frame because the implicitly-included origin uses the alternative service port.

I've been trying to find a word for a. the origin that is seed for the origin set, and b. the origin that the client is chasing with alternative services.  I don't think that "original origin" is very helpful.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/httpwg/http-extensions/pull/348#discussion_r117926445

---

From: HTTP issue updates <[email-masked]>
Date: Tue, 23 May 2017 01:17:40 -0700

@martinthomson pushed 1 commit.

23edbf8  Trying again to explain this convoluted scenario

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/httpwg/http-extensions/pull/348/files/526f8a8a9063e9c826363f7e461ead56f9fd6ea2..23edbf8d39e10ac0b3b87844d19dfd1008da5cbd

---

From: HTTP issue updates <[email-masked]>
Date: Wed, 24 May 2017 20:39:37 -0700

mnot commented on this pull request.

+Note:
+

Maybe define a new term "initial origin"?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/httpwg/http-extensions/pull/348#discussion_r118412838

---

From: HTTP issue updates <[email-masked]>
Date: Wed, 24 May 2017 20:44:01 -0700

+Note:
+

That's not quite it, it's the default (alternative) service for the origin that matters here.  The origin doesn't change when talking to an alternative.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/httpwg/http-extensions/pull/348#discussion_r118413193

---

From: HTTP issue updates <[email-masked]>
Date: Wed, 24 May 2017 21:54:06 -0700

+Note:
+

More noodling on this one... "initial origin" works, but that's not the hard one.  Does "original service" work for the service that is not an alternative?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/httpwg/http-extensions/pull/348#discussion_r118418491

---

From: HTTP issue updates <[email-masked]>
Date: Wed, 24 May 2017 22:18:43 -0700

69ce241  Define "initial origin", try to rework note

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/httpwg/http-extensions/pull/348/files/23edbf8d39e10ac0b3b87844d19dfd1008da5cbd..69ce24156a2d3193b627fffbe33795b53ce1e459

---

From: HTTP issue updates <[email-masked]>
Date: Mon, 29 May 2017 23:35:28 -0700

> @@ -153,6 +153,20 @@ The Origin Set is also affected by the 421 (Misdirected Request) response status
 
+Note:
+
+: Using an alternative service {{?RFC7838}} can result in using a service that has a different
+  port to the original service (that is, the server that a client contacts when it has no active
+  alternative services).  In that case, the initial origin will have a different port number.  A
+  client could be unable to send requests for the origin that advertised the alternative
+  service.  Explicitly including origins in the ORIGIN frame avoids this problem.
+

I think you want to say something like this:

> Servers used as an alternative service {{?RFC7838}} will need to explicitly send the origin(s) that are available when sending ORIGIN frames, because the initial origin set (see {{ref}}) does not contain any alternative services. Because the origin includes the port number, this includes alternative services that are on the same host as the origin.

I.e., this is about more than just ports.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/httpwg/http-extensions/pull/348#pullrequestreview-40861457

---

From: HTTP issue updates <[email-masked]>
Date: Wed, 31 May 2017 18:36:11 -0700

+Note:
+

That doesn't ring true either.  I realize that there are cases where the alternative has its own independent identity (e.g., example.com might use alt.example.net as an alternative, but that server might also want to serve resources for alt.example.net), but I wanted to avoid dragging that into this.

The port thing is a trap because the initial origin is primed based on the port that was *used*.  At least with the SNI, the original origin (example.com) is sent, so there is no confusion.  If the port number is the same for origin and alternative, the initial origin covers the resources that caused the client to use this alternative.  Send an empty ORIGIN frame and you still have a usable alternative.  Change the port number and that is no longer true.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/httpwg/http-extensions/pull/348#discussion_r119512414