lsquic.cr
lsquic.cr copied to clipboard
[Enhancement] Use the IETF draft-29 of HTTP/3
Is your enhancement request related to a problem? Please describe. Yes, lsquic causes a lot of signal 11 killed errors, so I thought this would be worth a shot to fix the issue
Describe the solution you'd like Usage of the IETF draft instead of Google's draft
Describe alternatives you've considered N/A
Additional context Google Chrome uses the IETF drafts by default now
Relevant code at https://github.com/iv-org/lsquic.cr/blob/cb01d0fbb8914bb4ce0831042fac6c6a21b5f48b/src/lsquic/client.cr#L200
Well the issue is that HTTP3 is not supported by crystal and not even HTTP2: https://github.com/crystal-lang/crystal/issues/2125#issuecomment-211024868
No language has inbuilt support for HTTP/3 currently. There are only implementations currently as they're just drafts currently. However, this is going to change soon when the v1 draft RFC is released.
It's also worth noting that lsquic and chromium are the only two network stacks with support for gquic
The RFCs have been published
This should be a one-line change from what I can see.
Changing LibLsquic::Version::Lsqver050 to LibLsquic::Version::LsqverId29 in https://github.com/iv-org/lsquic.cr/blob/cb01d0fbb8914bb4ce0831042fac6c6a21b5f48b/src/lsquic/client.cr#L200.
Was that even implemented in litespeed quic v2.18?
Last time I checked, it was in the latest release a few months ago.
So yes, it's likely there and hence why there's bindings for it.
This should be a one-line change from what I can see.
Changing
LibLsquic::Version::Lsqver050toLibLsquic::Version::LsqverId29in https://github.com/iv-org/lsquic.cr/blob/cb01d0fbb8914bb4ce0831042fac6c6a21b5f48b/src/lsquic/client.cr#L200.
I wish it was that easy. But in order to do that, we need to upgrade lsquic, and upgrade the C bindings in lsquic.cr
Last time I checked, it was in the latest release a few months ago.
So yes, it's likely there and hence why there's bindings for it.
It didn't exist at the time of lsquic 2.18: https://github.com/litespeedtech/lsquic/tree/v2.18.1/src/liblsquic/client.cr#L200