Split the http3 module, introducing the jna and quiche modules with their versions and licenses.
Updated project to reference the new groupId of the quiche binaries.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Made ServerProtocolSession's producer task of type EITHER.
This is necessary to allow for example DATA frames to be
processed to unblock blocked reads.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Made QuicConnection's fillable callback of type EITHER.
This is necessary when there are no threads available,
because we still want to read from the network and feed
Quiche so that it can progress with respect to packet
acknowledgments and flow control updates.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Added http3 Jetty module and distribution test.
Implemented simple logic to send the Alt-Svc header in HTTP/2 responses.
Updated JNA dependency to use jna-jpms.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
- Split Stream in Stream.Client and Server.Server, so segregate client-specific actions and events.
Now, only Stream.Server has method respond(), and only Stream.Client.Listener has method onResponse().
- Improved javadocs, and updated javadoc module to create javadocs for both http3 and quic modules.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
- 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>
- 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>
- 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>
- 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>
- 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>
- Improved logging in QuicheConnection.
- Incremented timeout for echo test in case of large content.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
- 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>
- 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>
- Improved configuration of client and server.
- Started implementation of HttpClientTransportOverHTTP3.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>