Implement websocket boostrapping for http2 #1604
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Contributes to #755
This PR adds CONNECT method and
:protocol
header field for HTTP/2 parsing.CONNECT HTTP/2 messages with
:protocol
equals towebsocket
transformed to HTTP/1.1 messages for backend with method GET, headersConnection: upgrade
andUpgrade: websocket
.Responses from backend with headers
Connection: upgrade
,Upgrade: websocket
and status 101 transformed to:status
200 HTTP/2 responses to client.When sending 200-success to CONNECT request with websocket
:protocol
we need not to send END_STREAM frame flag. So to gracefully shutting down stream we need to detectClose
websocket control frame or rely on closing tcp connection from backend or closing stream from client.Note that
Sec-WebSocket-Accept
stripped from HTTP/1.1 responses andSec-WebSocket-Key
added to HTTP/1.1 request to backend.Signed-off-by: Aleksey Mikhaylov [email protected]