Commit Graph

799 Commits

Author SHA1 Message Date
Greg Wilkins a890dbfc01 Merge remote-tracking branch 'origin/jetty-9.4.x' into jetty-9.4.x-2695-hpack-compliance 2018-07-17 17:49:19 +02:00
Simone Bordet 980282ef9b
Fixes #2672 - Max local stream count exceeded for Http2 Client (#2693)
* Fixes #2672 - Max local stream count exceeded for HttpClient with HTTP/2 transport.

Now waiting for the server preface to arrive to the client before making
the connection available to the ConnectionPool.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-07-16 17:13:47 +02:00
Greg Wilkins 0ad4b4483b WIP
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-07-15 19:22:31 +02:00
Greg Wilkins a9819ebb01 review fixes
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-07-12 11:50:53 +02:00
Joakim Erdfelt 0b69f00665 Updating to version 9.4.12-SNAPSHOT 2018-07-11 17:32:16 -05:00
Joakim Erdfelt 260596dd10 Updating to version 9.4.12.RC0 2018-07-11 16:30:55 -05:00
Greg Wilkins 44801d8ff3 WIP
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-07-08 18:08:36 +00:00
Greg Wilkins 9fd80e8524 WIP
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-07-08 15:17:39 +00:00
Greg Wilkins 10ec53319a WIP
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-07-08 14:56:42 +00:00
Greg Wilkins b42017b942 WIP
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-07-08 14:44:38 +00:00
Simone Bordet 635cf4d374 Issue #2349 - Review HTTP/2 max streams enforcement.
Restored code that was deleted by mistake.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-07-04 11:12:34 +02:00
Simone Bordet 253c637742
Fixes #2663 - Guard Throwable.addSuppressed() calls. (#2665)
* Fixes #2663 - Guard Throwable.addSuppressed() calls.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-06-14 15:21:44 +02:00
Greg Wilkins 346879f2a5
Merge pull request #2664 from mperktold/jetty-9.4.x
Issue #2662 Unnecessary boxing conversions
2018-06-13 22:52:27 +02:00
Matthias Perktold f901efc413 Issue #2662 - Unnecessary boxing conversions
Signed-off-by: Matthias Perktold <tias251@gmail.com>
2018-06-13 16:20:12 +02:00
Joakim Erdfelt e4bfe00dce Updating to version 9.4.12-SNAPSHOT 2018-06-05 14:18:37 -05:00
Joakim Erdfelt d5fc0523cf Updating to version 9.4.11.v20180605 2018-06-05 13:23:02 -05:00
Simone Bordet e5554831e0
Fixes #2616 - Trailers preventing client from processing all the data. (#2623)
* Fixes #2616 - Trailers preventing client from processing all the data.

Trailer handling was erroneously firing the response success event
before all the response content events happened.

Now the trailer handling uses a poison-pill DATA frame to make sure that
all response content events happen before the response success event.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-06-05 18:55:55 +02:00
Greg Wilkins 4d09806d4e
Issue #2571 HPACK table overflow (#2589)
When an entry that is too large for the dynamic table is added, the entire table should be evicted as per the RFC.  Previously we were throwing a 431 Bad Message.   This will require that the OP should retest #1134.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-05-30 09:22:00 +02:00
Greg Wilkins 953611fb72 reverted inadvertant commit with #2585
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-05-29 17:31:56 +02:00
Greg Wilkins 436c00b0af Fixed #2585
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-05-29 15:48:53 +02:00
Simone Bordet 1fc1ac89e2 Fixes #2545 - Slow HTTP2 per-stream download performance.
Moved the initialization of the SETTINGS frame to a common place
shared by both the low-level HTTP2Client and the higher level
HttpClientTransportOverHTTP2.

Did the same with HTTP2 server ConnectionFactories.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-05-18 09:06:49 +02:00
Simone Bordet 16b7359ae5 Fixes #2548 - Possible deadlock failing HTTP/2 stream creation.
Now failing the callback outside of the synchronized block.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-05-16 22:18:47 +02:00
Simone Bordet 01f7aecc4e Fixes #2546 - Incorrect parsing of PROXY protocol v2.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-05-16 21:33:22 +02:00
Simone Bordet 744f9054b3 Fixes #2547 - Review usages of ServerSocket[Channel].accept().
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-05-16 18:40:10 +02:00
Simone Bordet 0374d40cae
Issue #2439 - Remove HTTP/2 data copy. (#2444)
* Issue #2439 - Remove HTTP/2 data copy.

Implemented reference counting for the network buffer, with the
semantic that calling succeeded() on callbacks decrements the
reference count.
Introduced interface Retainable, used by the client when notifying
multiple application content listeners.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-05-09 09:39:57 +02:00
Joakim Erdfelt 1732ffca51 Updating to version 9.4.11-SNAPSHOT 2018-05-03 11:48:05 -05:00
Joakim Erdfelt daa59876e6 Updating to version 9.4.10.v20180503 2018-05-03 10:55:19 -05:00
Simone Bordet c4e1e8f454 Moved method onFlushed() to ISession.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-04-25 15:11:24 +02:00
Simone Bordet d7dac7ea1d Issue #2474 - HTTP/2 client not handling invalid servers correctly.
Fixed by start reading from the server after the session
promise has been notified, which may send the first request.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-04-23 20:04:25 +02:00
Simone Bordet fa5a1d3be4 Fixes #2453 - RawHTTP2ProxyTest.testRawHTTP2Proxy failure on CI.
onData() implementations must copy the data
bytes if they do not consume them locally.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-04-20 18:15:53 +02:00
Simone Bordet 50c44f2297 Fixes #2454 - Avoid sending empty DATA frame in case of HTTP/2 trailers.
Updated the logic to avoid sending an empty data frame
when only sending the trailers in HttpTransportOverHTTP2.send().

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-04-18 14:19:58 +02:00
Jan Bartel 0e88849a68
Issue #2164 Make osgi.serviceloader mostly optional (#2408)
Signed-off-by: Jan Bartel <janb@webtide.com>
2018-04-18 14:48:53 +10:00
Simone Bordet 6224e75862
Issue #2366 - Review HTTP/2 interleaving. (#2379)
* Fixes #2366 - Review HTTP/2 interleaving.

Now using a fairer algorithm that performs multiple generation passes
but without generating all frames for the current entries - it stops
after N passes over all the entries when the number of bytes to
write is large enough.

Using HttpConfiguration.outputBufferSize as the writeThreshold on
the server and a default 32 KiB on the client to stop the generation
after a pass over all the entries.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-04-13 11:50:17 +02:00
Simone Bordet c14f7efc95 Fixes spurious failures of FlowControlStrategyTest.testServerFlowControlOneBigWrite().
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-04-10 19:01:15 +02:00
Simone Bordet 06454f6409 Fixes #2420 - Simplify HttpTransportOverHTTP2.
Removed usage of ternary expressions in favor of if/else statements
to improve readability of the logic for the send() method.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-04-07 12:25:39 +02:00
Jan Bartel 16e625adde
Issue #2109 remove warnings for unused imports and exports (#2390)
Signed-off-by: Jan Bartel <janb@webtide.com>
2018-04-04 12:06:43 +10:00
Simone Bordet 072442a5e5 Fixes #2225 - Test failure: StreamResetTest.testBlockingWriteAfterStreamReceivingReset.
The problem was caused by the reset arriving to the server
_before_ the commit callback was invoked.
Now waiting for the commit callback to complete before
sending the reset to the server.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-03-29 12:31:44 +02:00
Simone Bordet 8cf15659be Issue #2349 - Review HTTP/2 max streams enforcement. (#2389)
* Issue #2349 - Review HTTP/2 max streams enforcement.

Changed the max concurrent remote streams enforcement algorithm.
It is now based on the stream count and the closing stream count,
updated atomically in a state machine in HTTP2Stream.

Fixed Javadoc.

Fixed close() method.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-03-28 13:10:11 +11:00
Joakim Erdfelt a74a328024 Merge branch 'release-9.4.9' into jetty-9.4.x 2018-03-21 16:33:56 -05:00
Simone Bordet 8251ed5a12
Fixes #2311 - TimeoutException when server sends unexpected content. (#2324)
Now exiting the parse loop when the response is complete; if there
are bytes remaining in the buffer, then it's cleared out.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-03-21 16:25:18 +01:00
Joakim Erdfelt c3cc138a3b Updating to version 9.4.10-SNAPSHOT 2018-03-20 08:25:59 -05:00
Joakim Erdfelt 1f8159b1e4 Updating to version 9.4.9.v20180320 2018-03-20 07:18:24 -05:00
WalkerWatch 534b8ea38b Add edit warning for .mod files. Resolves #173 2018-03-15 13:23:42 -04:00
Simone Bordet b00bb2adb2 Reverted logging level back to INFO.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-03-15 16:07:51 +01:00
Simone Bordet 8b391a88dd Fixes #2318 - HttpParser.Listener.onBadMessage() should take BadMessageException.
Changed the signature of HttpParser.Listener.onBadMessage()
to take a BadMessageException and updated dependent code.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-03-12 19:51:57 +01:00
Simone Bordet ff341fb420 Issue #2313 - Dump HTTP/2 channel state.
Added HTTP/2 stream age to toString().

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-03-12 11:30:00 +01:00
Simone Bordet 21bdb367fd Fixes #2313 - Dump HTTP/2 channel state.
Dumping also HttpChannelOverHTTP2 when dumping the HTTP2Stream.
The channel is now stored as a field in HTTP2Stream rather than
as an attribute to save the attributes map allocation.
Consequently, IStream has now getter/setter for the property
"attachment" that is used to store the channel without having
a type dependency on HttpChannel.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-03-10 15:11:40 +01:00
Simone Bordet 4c24c457de Fixes #2312 - HTTP/2 Connection.Listener notified after first request.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-03-10 15:05:02 +01:00
Simone Bordet b71cd70bf7 Fixes #2297 - HTTP/2 client transport should honor HttpClient.connectBlocking.
Introduced property connectBlocking in HTTP2Client so that it can
be forwarded by HttpClient and then used for HTTP/2 connects.

Also introduced HTTP2Client.bindAddress, again forwarded from HttpClient.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-03-07 11:52:28 +01:00
Greg Wilkins 74055b9837
Jetty 9.4.x 2293 pending multiplexed (#2294)
Issue #2293 Pending Multiplexed Connections

Added a AtomicBiInteger to allow both total connections and pending connections to be encoded in the
same atomic int.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-03-07 19:31:22 +11:00