Ludovic Orban
d0af388ab4
Issue #6728 - QUIC and HTTP/3
...
- refactor resource scopes and memory segments usage
2021-12-20 09:33:38 +01:00
Ludovic Orban
d2e76b077b
Issue #6728 - QUIC and HTTP/3
...
- commonalize quiche constants across bindings
2021-12-20 09:33:38 +01:00
Ludovic Orban
f0eb26533a
Issue #6728 - QUIC and HTTP/3
...
- foreign: delete native lib copy on exit
2021-12-20 09:33:38 +01:00
Simone Bordet
a234c7183a
Issue #6728 - QUIC and HTTP/3
...
- Fixed missing <release>17</release> element.
- Fixed --add-opens option in Surefire to run the tests.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
ec942f76bb
Issue #6728 - QUIC and HTTP/3
...
- Renamed Panama/JDK to Foreign/Incubator.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban
41a2e785a9
Issue #6728 - QUIC and HTTP/3
...
- use proper parent pom
2021-12-20 09:33:38 +01:00
Ludovic Orban
d90ce8327b
Issue #6728 - QUIC and HTTP/3
...
- use proper constant
2021-12-20 09:33:38 +01:00
Ludovic Orban
7df5bbc61b
Issue #6728 - QUIC and HTTP/3
...
- add windows and mac binding support
2021-12-20 09:33:38 +01:00
Simone Bordet
eb8444e2c2
Issue #6728 - QUIC and HTTP/3
...
- Incremented test timeouts.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
4d778b1aff
Issue #6728 - QUIC and HTTP/3
...
- Fixed session failure notification.
Now the failure is propagated to listeners.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
a7ec4ff525
Issue #6728 - QUIC and HTTP/3
...
- Fixed parsing of HEADERS frames.
- Fixed locking in QpackEncoder.
- Fixed creation of QuicStreamEndPoints.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
b19c135f46
Issue #6728 - QUIC and HTTP/3
...
- Fixed max streams semantic for HTTP/3.
It's not *concurrent* streams but *cumulative* streams that are limited.
Fixed MultiplexConnectionPool to take that into account with the introduction
of ConnectionPool.MaxUsable.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
6aedfe52f1
Issue #6728 - QUIC and HTTP/3
...
- Fixed HttpChannelOverHTTP3 input reading.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
fd118a4766
Issue #6728 - QUIC and HTTP/3
...
- Fixed end of stream detection.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
521a0adf0e
Issue #6728 - QUIC and HTTP/3
...
- Improved close mechanism.
Now error and reason are propagated at the HTTP/3 level, in case e.g. applications want to take statistics about the error codes.
- Improved buffer handling to be sure they are properly released back to the pool.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
85a13cfc20
Issue #6728 - QUIC and HTTP/3
...
- Fixed buffer release to avoid leaks.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
44132b966d
Issue #6728 - QUIC and HTTP/3
...
- Fixed 100 Continue handling.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
baab1a15b9
Issue #6728 - QUIC and HTTP/3
...
- More fixes and improvement to HTTP client transport tests.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
aac4232e20
Issue #6728 - QUIC and HTTP/3
...
- More fixes and improvement to HTTP client transport tests.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
40aba07e33
Issue #6728 - QUIC and HTTP/3
...
- More work on making HTTP semantic layer work on top of HTTP/3.
- Various fixes and improvement to HTTP client transport tests.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban
b937a31b72
Issue #6728 - QUIC and HTTP/3
...
- Renamed methods & variables for clarity
- Tightened code visibility
2021-12-20 09:33:38 +01:00
Simone Bordet
3585b408b7
Issue #6728 - QUIC and HTTP/3
...
- Made sure Connection.Listeners are properly notified.
- Fixed removal of QuicStreamEndPoints from QuicSession in case of successful request/response exchanges.
- Avoid spurious wakeups by shutting down input after receiving a frame with last=true.
- Updated HttpClient transport tests to work with UNIX_DOMAIN.
- Started updating HttpClient transport tests to work with HTTP/3.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
ae15c5cc63
Issue #6728 - QUIC and HTTP/3
...
- Improved logging in QuicheConnection.
- Incremented timeout for echo test in case of large content.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
c879358777
Issue #6728 - QUIC and HTTP/3
...
- QPACK exceptions now use long instead of int, to be consistent with other error codes.
- Fixed ManagedSelector to count down the stop latches in finally blocks, so that they are always counted down even in case of exceptions.
- Improved exception handling in case of closes.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
8e81c80e1e
Issue #6728 - QUIC and HTTP/3
...
- Added timeouts for QUIC tests.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
4eaff8e880
Issue #6728 - QUIC and HTTP/3
...
- Moved ExecutionStrategy from ServerQuicConnection to QuicConnection.
For the server the produced task is declared as BLOCKING, but for the
client the produced task is NON_BLOCKING.
- Fixed race condition in QuicSession.process(...).
- Updated quic-quiche pom.xml.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
5ca88d3231
Issue #6728 - QUIC and HTTP/3
...
- Removed dataFrame queue in HTTP3StreamConnection.
- Made readData() idempotent.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
af885c3b49
Issue #6728 - QUIC and HTTP/3
...
- Improvements to the thread model implementation.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
0b5241df6b
Issue #6728 - QUIC and HTTP/3
...
- WIP on the client upper layer.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
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