You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The h3 crate is mostly working, and while the hyper 1.0 roadmap has changes need to allow new HTTP versions which don't use TcpStream to be added, it would be helpful to try out the h3 crate before it appears in hyper. To that end, I believe adding "experimental" (or "unstable") support to reqwest is a great way to just that.
Overall, I'd guesstimate this is a medium-sized issue. Even if familiar with how hyper and reqwest usually work, I'd imagine it would take a few hours to pipe everything through. A few more if you're not familiar.
Here's a (potentially incomplete) list of what would need to be done:
Add an optional git dependency on h3-quinn (s2n-quic-h3 could also be used).
Edit reqwest's async_impl::client::Client to hold both a hyper::Client but also a small pool of HTTP/3 connections.
In Client::request, if the version is HTTP_3, then use the h3 pool.
The DNS resolver would need to be cloned for the h3 pool.
If a connection doesn't exist for the target authority, resolve the address, create a UdpSocket, and pass it to quinn.
Once ready, spawn the h3::client::Driver into Tokio.
Use the SendRequest to start sending a request.
Adjust the async_impl::response::Response and Body to be an enum of the regular repr, and another variant for the h3 types. Or boxed them if it's easy to do so.
The text was updated successfully, but these errors were encountered:
The
h3
crate is mostly working, and while the hyper 1.0 roadmap has changes need to allow new HTTP versions which don't useTcpStream
to be added, it would be helpful to try out theh3
crate before it appears in hyper. To that end, I believe adding "experimental" (or "unstable") support to reqwest is a great way to just that.Overall, I'd guesstimate this is a medium-sized issue. Even if familiar with how hyper and reqwest usually work, I'd imagine it would take a few hours to pipe everything through. A few more if you're not familiar.
Here's a (potentially incomplete) list of what would need to be done:
h3-quinn
(s2n-quic-h3
could also be used).async_impl::client::Client
to hold both ahyper::Client
but also a small pool of HTTP/3 connections.Client::request
, if the version isHTTP_3
, then use the h3 pool.UdpSocket
, and pass it to quinn.h3::client::Driver
into Tokio.SendRequest
to start sending a request.async_impl::response::Response
andBody
to be an enum of the regular repr, and another variant for the h3 types. Or boxed them if it's easy to do so.The text was updated successfully, but these errors were encountered: