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

Merge series/0.5 to main #418

Merged
merged 117 commits into from
Feb 6, 2023
Merged

Merge series/0.5 to main #418

merged 117 commits into from
Feb 6, 2023

Conversation

hamnis
Copy link
Collaborator

@hamnis hamnis commented Feb 6, 2023

No description provided.

http4s-steward bot and others added 30 commits October 12, 2022 02:43
…p-4.1.84.Final

Update netty-codec-http, ... to 4.1.84.Final in series/0.5
…streams-http-2.0.7

Update netty-reactive-streams-http to 2.0.7 in series/0.5
Executed command: sbt githubWorkflowGenerate
….13.10

Update scala-library to 2.13.10 in series/0.5
…0.14.7

Update sbt-http4s-org to 0.14.7 in series/0.5
….6.1

Update scalafmt-core to 3.6.1 in series/0.5
Executed command: sbt githubWorkflowGenerate
…3.2.1

Update scala3-library to 3.2.1 in series/0.5
…-transport-classes-io_uring-0.0.16.Final

Update netty-incubator-transport-classes-io_uring, ... to 0.0.16.Final in series/0.5
…p-4.1.85.Final

Update netty-codec-http, ... to 4.1.85.Final in series/0.5
http4s-steward bot and others added 25 commits January 30, 2023 12:47
Executed command: sbt githubWorkflowGenerate
…3.2.2

Update scala3-library to 3.2.2 in series/0.5
…-transport-classes-io_uring-0.0.17.Final

Update netty-incubator-transport-classes-io_uring, ... to 0.0.17.Final in series/0.5
Problem

Right now we support HTTP/2 only as a negotiated protocol via ALPN. This
is unfortunate as HTTP/2 is just as good cleartext as it is over TLS.

Solution

Add HTTP/2 prior knowledge detection to the cleartext pathway for the
server. This is done by looking for the magic preface which is not valid
as a HTTP/1.x message preface and initialize the pipeline accordingly.
Add support for HTTP/2 Prior Knowledge to the server implementation
* Shared Http4sHandler

* Add callback queue to allow requests  to be underway
* Use same future trick as in server to work as a queue
* do not unregister handler, as that causes strange problems
* Add  mima exclusions
* Use client test battery and upgrade to cats-effect-munit 2
* Add mitigation to help with request splitting attack
* parallel requests now work
ChannelPoolMap can run the request
This should hopefully stabilize the websocket client

* MIMA
* safe callback
* back to traverse
* Re-enable websocket-aggragator and move timeout to correct place
* drain queue when closed
* release frame
We check if the channel is closed before we submit the dispatch to the
channels executor, so if the channel is initially active but closes before
we enter the executor we will put a request in the queue and it will sit
there forever.

Instead, check that the channel is active right before dispatching. This
closes the window for the race condition.
Fix a race condition where a client channel closes and leaves a dispatch hanging
try to avoid deadlock for websockets
use unsafeRunAndForget where applicable
unsafeRunSync onNext since ordering matters
comments for dispatcher and eventloop
Avoid deadlock websocket client
make sure we call all enqueued callbacks
http client - even safer dispatch
@hamnis hamnis merged commit 8587f95 into main Feb 6, 2023
@hamnis hamnis deleted the merge/main branch February 6, 2023 20:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants