Commit Graph

249 Commits

Author SHA1 Message Date
Olivier Lamy dbd07146ec
merge back release branch to bump version to 10.0.13-SNAPSHOT (#8593)
* Updating to version 10.0.12

* Updating to version 10.0.13-SNAPSHOT

* VERSION.TXT =+ content of jetty-9.4.49.v20220914 release

* remove strange line and reorder
2022-09-16 19:50:12 +10:00
Simone Bordet 8d2b182afe
Fixes #8558 - Idle timeout occurs on HTTP/2 with InputStreamResponseListener.
Fixed override of reset().

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-09-15 11:01:45 +02:00
Simone Bordet dab4fe60d3
Fixes #8558 - Idle timeout occurs on HTTP/2 with InputStreamResponseL… (#8585)
* Fixes #8558 - Idle timeout occurs on HTTP/2 with InputStreamResponseListener.

The issue was that HttpReceiverOverHTTP2.ContentNotifier.offer() was racy,
as a network thread could have offered a DATA frame, but not yet called
process() -- yet an application thread could have stolen the DATA frame
completed the response and started another response, causing the network
thread to interact with the wrong response.

The implementation has been changed so that HttpReceiverOverHTTP2.ContentNotifier
does not have a queue anymore and it demands DATA frames to the Stream
only when the application demands more -- a simpler model that just forwards
the demand.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-09-15 10:18:36 +02:00
Simone Bordet 77ad0189ba
Fixes #8532 - Review System.nanoTime() usages. (#8535)
* Fixes #8532 - Review System.nanoTime() usages.

Introduced o.e.j.util.NanoTime class to deal with nanoTimes.

Now NanoTime.now() should be used instead of System.nanoTime(),
and various <unit>[elapsed|since|until]() methods to calculate nanoTimes.

Furthermore, comparing 2 nanoTimes should be done via isBefore(),
rather than using the < operator, which is wrong as specified in
the System.nanoTime() javadocs.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-09-06 09:30:02 +02:00
Olivier Lamy 9149945945
simplify pom by using simple property rather than xml fragment (#7580)
* simplify pom by using simple property rather than xml fragment

Signed-off-by: Olivier Lamy <oliver.lamy@gmail.com>
2022-07-14 09:42:28 +10:00
Greg Wilkins 2b817f06c6
Combined ByteBufferPool (#8171)
All `ByteBufferPool` can now be accessed as `RetainableByteBufferPools`.

Users now need to configure only a single buffer pool and there is just the additional retained parameter that needs consideration.
Default buffer pool has been changed to logarithmic, but we may wish to review that before next release.
Default factor size has been increased to 4096.
2022-07-04 10:38:30 +10:00
Joakim Erdfelt 64d12e2a5a
Merge Release 10.0.11 back into `jetty-10.0.x` branch (#8194)
* Updating to version 10.0.11

* Updating to version 10.0.12-SNAPSHOT
2022-06-22 16:24:48 -05:00
Joakim Erdfelt c2bc103cb9
Merge Release 10.0.10 back into `jetty-10.0.x` (#8180)
* Updating to version 10.0.11-SNAPSHOT
2022-06-21 14:41:41 +02:00
Greg Wilkins 7a1c165677
Implement #8057 103 Early Hint (#8058)
Co-authored-by: Ludovic Orban <lorban@bitronix.be>
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2022-06-01 11:56:54 +10:00
Simone Bordet 513a2cb256
Fixes #7935 - Review HTTP/2 error handling (#8048)
Fixed HTTP/3 in similar way as HTTP/2.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-05-23 16:12:24 +02:00
Lachlan Roberts 15e32ca3ea Merge remote-tracking branch 'origin/jetty-10.0.x' into jetty-10.0.x-7635-QpackDecoderMaxBlockedStreams 2022-05-16 09:59:00 +10:00
Lachlan Roberts ac56b95eba fix checkstyle violation
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-05-13 16:21:07 +10:00
Lachlan Roberts b9689c2f27 add missing licence header
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-05-13 16:15:03 +10:00
Lachlan Roberts 0b00c0628e Issue #7635 - add extra testing for QPACK blocked streams
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-05-13 16:11:15 +10:00
Lachlan Roberts 2e98a26f03 added extra checks in SectionAcknowledgmentTest
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-05-13 13:49:10 +10:00
Lachlan Roberts 8d331964a7 Merge remote-tracking branch 'origin/jetty-10.0.x' into jetty-10.0.x-7635-QpackDecoderMaxBlockedStreams 2022-05-05 16:12:09 +10:00
Lachlan Roberts b9901bcd47 Merge remote-tracking branch 'origin/jetty-10.0.x' into jetty-10.0.x-qpack-sectionAck 2022-05-05 16:10:36 +10:00
Lachlan Roberts 685d617a1b Issue #7802 - add testing for qpack section acknowledgement
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-05-05 16:09:55 +10:00
Joakim Erdfelt 16420f0181
Set version to `10.0.10-SNAPSHOT` (#7823)
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2022-04-03 20:33:44 +10:00
Joakim Erdfelt f079949a35
Merge Release 10.0.9 (#7821)
* Updating to version 10.0.9

* Updating to version 10.0.10
2022-04-02 08:43:44 -05:00
Lachlan Roberts 6143e4358f do not expect section ack for zero required insert count
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-03-30 11:02:30 +11:00
Simone Bordet 40e7d6a716
Fixes #7774 - Flaky Test: DataDemandTest.testBlockingReadInADifferentThread(). (#7776)
Do not try to release the network buffer after having notified onDataAvailable()
because it can be in a race with the application trying to read data and also
trying to release the network buffer.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-03-25 11:30:53 +01:00
Lachlan Roberts 39ff60f595 Issue #7635 - implement maxBlockedStreams logic in QpackDecoder
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-02-28 18:54:40 +11:00
Simone Bordet 55eb982185
Fixes #7625 - HTTP/3 error against www.google.com
Now properly handling QPACK and HTTP/3 settings.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-02-22 11:36:37 +01:00
Simone Bordet a4fda96f49
Updating to version 10.0.9-SNAPSHOT 2022-02-07 12:02:02 +01:00
Simone Bordet 716c7afd8e
Updating to version 10.0.8 2022-02-07 11:34:12 +01:00
Joakim Erdfelt cb127793e5
Happy New Year 2022 (#7459)
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2022-01-27 10:42:30 -06:00
Simone Bordet 3042f2b2bf
Fixes #7348 - Slow CONNECT request causes NPE (#7349) (#7352)
* Fixes #7348 - Slow CONNECT request causes NPE (#7349)

Added NPE guard in `HttpReceiverOverHTTP.onUpgradeFrom()`.
Expanded logic in `HttpReceiverOverHTTP.parse()` to return true in case of CONNECT + 200.

Fixed `ProxyConnection.toConnectionString()` to avoid NPEs.

Fixed `HttpClientTest.testCONNECTWithHTTP10()` logic
after changes to fix this issue.

Now a tunneled connection is not put back into the connection pool,
and if applications explicitly want to use it, they must re-enable
fill interest, similarly to what should be done after upgrade+101.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
(cherry picked from commit 5eb7b70df7)
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-01-06 11:08:12 +01:00
Simone Bordet b385cf930e
Issue #6728 - QUIC and HTTP/3
Fixed HTTP/3 POM files.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 10:10:05 +01:00
Simone Bordet 7811f40c67 Issue #6728 - QUIC and HTTP/3
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>
2021-12-20 09:33:38 +01:00
Simone Bordet e8c6fcf975 Issue #6728 - QUIC and HTTP/3
Fixed javadocs.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 9231d43308 Issue #6728 - QUIC and HTTP/3
Added more logging about HTTP/3 being experimental.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet a85dd4240d Issue #6728 - QUIC and HTTP/3
Tagged the `http3` Jetty module as "experimental".

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 578ae30311 Issue #6728 - QUIC and HTTP/3
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>
2021-12-20 09:33:38 +01:00
Simone Bordet 3329604585 Issue #6728 - QUIC and HTTP/3
- Fixed javadoc error.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet 64296f76f1 Issue #6728 - QUIC and HTTP/3
- 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>
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 cd1343fd6c Issue #6728 - QUIC and HTTP/3
- More test fixes.

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 4c22ae9e1b Issue #6728 - QUIC and HTTP/3
- Fixed idle timeout handling.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet cb97549fa6 Issue #6728 - QUIC and HTTP/3
- Fixed trailer frame handling.

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 aadc86d36a 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 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 dc5ffe1a8e Issue #6728 - QUIC and HTTP/3
- Made HttpChannelOverHTTP3.needContent() to look for content if none is immediately available.
- Improved javadocs.

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