Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CONNECT and prospective data #780

Closed
MikeBishop opened this issue Feb 19, 2021 · 5 comments · Fixed by #808
Closed

CONNECT and prospective data #780

MikeBishop opened this issue Feb 19, 2021 · 5 comments · Fixed by #808

Comments

@MikeBishop
Copy link
Contributor

The spec currently says this about data sent along with a CONNECT request:

Content within a CONNECT request message has no defined semantics; sending content in a CONNECT request might cause some existing implementations to reject the request.

Is there a demarcation between data "within" a request and data to be sent on the tunnel if it opens successfully? HTTP/2 and HTTP/3 are fairly specific that all DATA frames are data for the tunnel. Do we need to say anything about the client prospectively sending data before the proxy responds?

@mnot mnot added the semantics label Feb 24, 2021
@royfielding
Copy link
Member

We should decide what we want to allow. If HTTP/3 is going to send CONNECT data within HTTP/3 frame payloads after (or before) the recipient accepts the CONNECT, then we should specify it differently than how we specified CONNECT in 1.1. I am fine with that.

@reschke
Copy link
Contributor

reschke commented Mar 2, 2021

Hm. Does this imply we special-case 1.1, and require the HTTP/2/3 behaviour for new versions?

@royfielding
Copy link
Member

Hm. Does this imply we special-case 1.1, and require the HTTP/2/3 behaviour for new versions?

I think it is already a special case for 1.1, so that's not a problem.

@reschke
Copy link
Contributor

reschke commented Mar 2, 2021

OK, let me rephrase this then :-).

Are we trying to make it consistent for all "new" versions?

@MikeBishop
Copy link
Contributor Author

Given that CONNECT is specified on a version-by-version basis anyway, I think I'd rephrase it with something like this:

A CONNECT request message does not have a body. In some versions of HTTP, data following the request message is interpreted as data destined for the requested tunnel, if one is opened. In a version which does not specify the behavior of data received after the request, sending content with a CONNECT request might cause some existing implementations to reject the request.

CONNECT is one of those weird edges of the protocol where each version will have to respecify its behavior; we don't necessarily need to prescribe what it will be, just make allowances for versions to differ.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging a pull request may close this issue.

4 participants