Coder Social home page Coder Social logo

Implement QUIC-HTTP framing about quinn HOT 12 CLOSED

quinn-rs avatar quinn-rs commented on July 20, 2024 2
Implement QUIC-HTTP framing

from quinn.

Comments (12)

djc avatar djc commented on July 20, 2024 1

I don't think the frames match the HTTP spec itself, so I don't think you'll find much to use from the http crate.

I forgot to mention it, but I agree that a separate crate would make sense. To disambiguate the HTTP protocol version, I think it would be good to call it quinn-h3.

from quinn.

passchaos avatar passchaos commented on July 20, 2024

Any progress?

from quinn.

djc avatar djc commented on July 20, 2024

Not yet, we've been focusing on updating our spec compliance to the latest draft. Would you like to help out? I'm happy to mentor!

from quinn.

passchaos avatar passchaos commented on July 20, 2024

Sorry, I am busy recently. I am happy to do this in the future.

from quinn.

djc avatar djc commented on July 20, 2024

No problem, I figured it was worth asking. We'll get to it eventually, hopefully somewhat soon.

from quinn.

stammw avatar stammw commented on July 20, 2024

Hey! I'd like to start working on this next !

from quinn.

djc avatar djc commented on July 20, 2024

@stammw great! The idea here is just to implement the bytes-to-types and types-to-bytes code for the data structures defined in the HTTP spec. Ideally the module would include unit tests that just check whether round-tripping works as expected. I think it would make sense to use the Codec trait as is used for example in the frame module (which should provide good examples).

Let us know if you have questions!

from quinn.

Ralith avatar Ralith commented on July 20, 2024

It might be worth leveraging types from the http crate, though I'm not sure how much work might be required on their end to play well with HTTP3 concepts.

I'd also ideally like to see this be a separate crate in the workspace (e.g. quinn-http) so non-http users don't need to deal with the extra code/dependencies.

from quinn.

stammw avatar stammw commented on July 20, 2024

Hey,
What do you think about how I should handle the QPACK encoded frames (HEADERS, including PUSH_PROMISE ones) ?

  1. Return HttpFrame variant that contains raw Bytes
  2. Return HttpFrame variant that contains a stubbed QPACK type
  3. Do not implement them for the moment

from quinn.

Ralith avatar Ralith commented on July 20, 2024

In the interest of being able to run tests, stubbing them out seems most practical. Unless there's some conceivable use for the raw data other than immediately decompressing it?

from quinn.

stammw avatar stammw commented on July 20, 2024

Actually, I think QPACK wouldn't be a data type but a trait. So stubbing and using raw types inside variants might be more or less the same solution. And at the and the encode -> decode -> compare tests still be writable even if the given part would have to be changed afterward?

I wonder how much effort it would take to finish the existing QPACK PR... I worry that #130 will be blocked until then, eventually.

from quinn.

stammw avatar stammw commented on July 20, 2024

closed via #130

from quinn.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.