Commit Graph

97 Commits

Author SHA1 Message Date
Simone Bordet dd4b970357 Issue #6728 - QUIC and HTTP/3
- WIP on the threading model.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet a803dfa44f Issue #6728 - QUIC and HTTP/3
- Improved configuration of client and server.
- Started implementation of HttpClientTransportOverHTTP3.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban 336f39c73e WIP: reworking H3 channel impl + workaround quiche bug by using CUBIC congestion control
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Simone Bordet 24840a6ede Issue #6728 - QUIC and HTTP/3
- Updated to 10.0.8-SNAPSHOT.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 3046bd831b Issue #6728 - QUIC and HTTP/3
- Clearly separated QUIC errors from HTTP3 errors.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 9a84bbbb71 Issue #6728 - QUIC and HTTP/3
- Implemented graceful shutdown functionality.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 392d59e9f7 Issue #6728 - QUIC and HTTP/3
- Implemented component hierarchy.
- Implemented dumpability of components.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban 0ea4b3f7c4 implement adaptive execution strategy for simple requests
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Simone Bordet 16a91b04a8 Issue #6728 - QUIC and HTTP/3
- Fixed configuration of QuicConnection.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet cd161b491e Issue #6728 - QUIC and HTTP/3
- Implemented goAway mechanism.
- Implemented idle timeout mechanism.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 3c2feabaf6 Issue #6728 - QUIC and HTTP/3
- Implemented GOAWAY parsing/generation.
- Implemented handling of GOAWAY frames.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet f061cc41db Issue #6728 - QUIC and HTTP/3
- Added more configuration properties.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet c8107539df Issue #6728 - QUIC and HTTP/3
- Implemented stream idle timeouts.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 2b966c04ee Issue #6728 - QUIC and HTTP/3
- Fixed module-info.java canonical ordering.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 06ffd014f9 Issue #6728 - QUIC and HTTP/3
- Implemented support for GREASE for unidirectional and bidirectional streams.
- Implemented UnknownBodyParser.
- Strengthened validation of frames in control and message streams.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban 49dc5617ac cleanup jna mappings
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Simone Bordet b93436d0e8 Issue #6728 - QUIC and HTTP/3
- Fixed charset encoding handling.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet dc889bd7d8 Issue #6728 - QUIC and HTTP/3
- Initial support for closing HTTP/3 sessions and session failure events.
- Enforced HTTP/3 frame sequence.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban b09191d2f8 Fix application protocol to make it work with utf8
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Simone Bordet 2e98931654 Issue #6728 - QUIC and HTTP/3
- Fixed module-info.java for HTTP/3 modules.
- Updated package-info.java for QUIC.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 2d4cb5abbf Issue #6728 - QUIC and HTTP/3
- Avoid sending the last=true flag as a separate QUIC frame.
Apparently Quiche has problem notifying this frame to the receiving peer.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban 161f8e4f82 Upgrade to quiche 0.10.0
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Simone Bordet 8b3ae8a661 Issue #6728 - QUIC and HTTP/3
- More javadocs.
- Fixed QuicSession.fill() to also flush() to send to the remote peer the information that the data has been consumed.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 43551487ee Issue #6728 - QUIC and HTTP/3
- Implemented data support.
- Implemented trailer support.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban 8bf9227db2 add low-level quiche tests
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Simone Bordet fcdabeb933 Issue #6728 - QUIC and HTTP/3
- Changed the parsers to emit during parsing, rather than returning the event.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet b42bfa214a Issue #6728 - QUIC and HTTP/3
- Fixed handling of the last frame, exposing a new API in QuicStreamEndPoint.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban a092078668 replace synchronized keyword with AutoLock
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Simone Bordet 7cb32b2d98 Issue #6728 - QUIC and HTTP/3
- Changed HTTP/3 parsers to return the Frame rather than notifying a listener.
- Correctly linked encoder and decoder streams to respectively QpackEncoder and QpackDecoder.
- Fixed buffer release.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban 59664ecaf6 fix IPv6
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Ludovic Orban a7a44f0d67 rename methods to get congestion window capacity
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Ludovic Orban c303af990a add method to get congestion window capacity
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Ludovic Orban b6470f3973 #6730 add support for windows x86_64 quiche 0.9.0 binary lib
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Lachlan Roberts 47030b0ce0 Fix licence header in quic StreamType
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 7c75e9c22f Issue #6728 - QUIC and HTTP/3
- Restructured code
- Split implementation of control and message parsing/generation.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 7c09800fe1 Issue #6728 - QUIC and HTTP/3
- Continued implementation of HTTP/3 APIs, frames and parsing, client and server.
- Figured out creation of streams, to support special HTTP/3 streams.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban 3cbbb47742 generify sockaddr and sockaddr_storage to simplify native mappings
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Ludovic Orban 29c8256b39 add IPv6 support
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Ludovic Orban 3d8433b58c keep quiche version check out of if (debug enabled) branch
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Ludovic Orban 280bb4c887 split linux and macos native structures to account for native differences
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Greg Wilkins feb3a24f06 Added puml diagram
More execution strategy ideas

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban ab16e625e0 #6730: fix ip encoding endianness + move timespec to ffi
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Lachlan Roberts 80d2cee238 Issue #6728 - Fixes for QPACK
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-12-20 09:33:38 +01:00
Greg Wilkins 0d2fe5657a Added puml diagram
More execution strategy ideas

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2021-12-20 09:33:38 +01:00
Greg Wilkins 125a4e03b9 Added puml diagram
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 730ef449a0 Issue #6728 - QUIC and HTTP/3
- Started implementation of HTTP/3 APIs, frames and parsing.
- Started implementation of server-side HTTP/3.
- Reworked the threading model in QUIC to be more efficient and avoid contending on the QPACK encoder/decoder.
- Updated QPACK NBitLongEncoder to support QUIC stream IDs of type long.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban 4b6bcca529 get rid of promoteSession()
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00