-
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
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
Add msh3 Support #8517
Add msh3 Support #8517
Conversation
If this is merely an experimental/PoC library, is the cost of maintaining curl
support worth the likelihood of msh3 ending up abandoned and never fit for use?
What is the long-term, or even medium-term, plan for this library? Is it on a
path for completion/productionization and support?
|
msquic is officially supported. msh3 is currently just a personal project of mine (~1000 LoC), with a hope of possibly getting it officially supported in the future. But per my understanding, all HTTP/3 code is considered experimental currently anyways, so there is no guarantee of support for the code yet. |
Yeah, it does @bagder. But at the same time, I don't want to just drop some crap on you and leave. I want to give you something that works, and can be taken up by others (if they want). I don't know how much time I will be able to dedicate in the long run to help (beyond official support for I've done more work on the |
@bagder things should be good now. Found/fixed the bug you reported about all-zero data size. One interesting thing I found is that the curl thread to drain receives is much slower than the callbacks from msh3. For instance, if you define |
I think I figured out at least part of the slow curl thread issue. I had to implement
As you can see from logs above, we are returning that data to curl: |
After trying to read through the curl code that calls h3, I still can't figure it out. I'm about as far as I can get for now without help. |
I appreciate how you might run into some curl peculiarity here as the h3 layering is not always crystal clear or even totally sensible. Let me know if you get stuck for real and I can give it a shot from my end. |
Still this issue you mean? |
Yes. I don't understand how I'm supposed to correctly indicate stream closure to curl. AFAICT, the code looks correct, but at least in some scenarios curl says it was terminated without all the data. |
I get build errors on Linux:
|
Is this PR good to go now? Do you still want me to squash rebase first? Anything else? |
I think it is good to go. I will squash it on merge myself, no need for you to do it. |
Thanks! |
This PR adds a new experimental, cross-platform HTTP/3 option. It leverages msh3 which is an experimental/PoC HTTP/3 library on top of msquic.
Manually tested on Linux (GitHub Codespaces) and on Windows 11 against several public HTTP/3 hosts (google.com, cloudflare.com, outlook.office.com).