lsquic.cr icon indicating copy to clipboard operation
lsquic.cr copied to clipboard

[Enhancement] Use the IETF draft-29 of HTTP/3

Open FireMasterK opened this issue 4 years ago • 8 comments

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

FireMasterK avatar Apr 08 '21 06:04 FireMasterK

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

unixfox avatar Apr 08 '21 09:04 unixfox

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

FireMasterK avatar Apr 08 '21 09:04 FireMasterK

The RFCs have been published

B0pol avatar Jun 18 '21 12:06 B0pol

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.

FireMasterK avatar Jun 18 '21 14:06 FireMasterK

Was that even implemented in litespeed quic v2.18?

syeopite avatar Jun 18 '21 14:06 syeopite

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.

FireMasterK avatar Jun 18 '21 14:06 FireMasterK

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.

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

SamantazFox avatar Jun 19 '21 15:06 SamantazFox

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

unixfox avatar Jun 19 '21 15:06 unixfox