Simone Bordet
f3a805887e
Fixes #542 - Support Connection.Listener bean on clients.
...
Introduced ClientConnectionFactory.customize() to look for
Connection.Listener beans.
ClientConnectionFactory implementation calls customize() when they
create a Connection instance, so the Connection.Listener beans are
registered onto the Connection.
2016-05-25 19:27:08 +02:00
Simone Bordet
f6098497c0
Explicitly setting the EndPoint idle timeout in case
...
HttpClient.idleTimeout has changed after start().
2016-05-25 19:27:08 +02:00
Simone Bordet
6bf3607444
Fixed toString() NPE in case the stream is null.
2016-05-25 19:27:08 +02:00
Simone Bordet
ddddc3a675
Fixes #574 - Introduce a TLS handshake completed listener.
...
Introduced class SslHandshakeListener that can be registered as a
bean in both the ServerConnector and in clients such as HttpClient
and HTTP2Client.
When creating SslConnection instances, the factory will query the
connector (client or server) for SslHandshakeListener beans and, if
present, will be added to the SslConnection.
2016-05-24 16:09:19 +02:00
Simone Bordet
d73c60db14
Issue #464 - Improve reporting of SSLHandshakeException.
2016-05-24 11:15:18 +02:00
Simone Bordet
c8c74da50a
Issue #581 - Initial session recv window setting not working.
...
Updating the local session receive window before sending it to the client.
2016-05-20 11:17:50 +02:00
Simone Bordet
d55aaa4a0c
Improved logging.
2016-05-20 01:12:24 +02:00
Jesse McConnell
dc4574f380
[maven-release-plugin] prepare for next development iteration
2016-05-17 17:30:17 -05:00
Jesse McConnell
0bbebec1e0
[maven-release-plugin] prepare release jetty-9.3.9.v20160517
2016-05-17 17:30:13 -05:00
Simone Bordet
dee3331ffb
Issue #572 - Don't reject HTTP/2 requests without body in low threads mode.
...
* Made ProduceExecuteConsume the default ExecutionFactory for HTTP/2.
* Made the HTTP/2 fillable callback non-blocking.
* Introduced configuration for the server initial session recv window.
* Sending a WINDOW_UPDATE frame at session setup to inform the client
about the server session recv window.
2016-05-16 15:01:08 +02:00
Simone Bordet
67ea8db5aa
Always copy the request metadata.
...
This is necessary because the HTTP/1.1 machinery will recycle the
Metadata.Request object, and it may race with a thread dispatch to
the HTTP/2 machinery that will handle the request.
2016-05-16 15:01:08 +02:00
Simone Bordet
242b6b5f66
Merged branch 'jetty-9.2.x' into 'jetty-9.3.x'.
2016-05-12 18:59:40 +02:00
Simone Bordet
016fc6569f
Fixes #558 - HTTP/2 server hangs when thread pool is low on threads.
...
Modified ExecuteProduceConsume to test for Rejectable tasks when
trying to execute a task in low threads mode, and if so, reject them
immediately.
2016-05-12 00:13:35 +02:00
Simone Bordet
1fc40864e1
Issue #558 (HTTP/2 server hangs when thread pool is low on threads).
...
Verify that rejecting tasks avoids hanging the server when in low
threads mode.
2016-05-11 13:05:16 +02:00
Simone Bordet
8ac23d187a
Added tests to verify input data consumption.
...
Verify that input data is consumed at the end of a request handling,
either when input is not read and when an exception is thrown,
to make sure that the session flow control is not stalled.
2016-05-11 13:05:16 +02:00
Simone Bordet
c14833a7f1
Fixes #552 (Improve HTTP/2 idle timeout handling)
...
Made sure that the stream idle timeout is reset for every stream read
and write.
Made sure that both the stream and the session idle timeouta are reset
for buffered data reads.
2016-05-07 14:45:34 +02:00
Simone Bordet
6827c5b045
Fixes #514 - Allow ExecutionStrategy to be configurable.
...
Introduced setters and constructor parameters to components that use
ExecutionStrategy.
2016-04-14 12:20:31 +02:00
Joakim Erdfelt
6fb338e50d
Updating to version 9.3.9-SNAPSHOT
2016-04-11 16:20:50 -07:00
Joakim Erdfelt
bb4f3c4882
Updating to version 9.3.9.M1
2016-04-11 15:35:22 -07:00
Simone Bordet
f0a1ccf4d3
Fixes #504 - HTTP/2 client transport cannot send request after idle timeout.
...
Made sure that the idle timeout mechanism notifies the destination
that the connection will close.
Also reviewed the close protocol to be: notify destination, then abort,
then close. In this way, HTTP/2 can send RST_STREAM before the
connection is closed.
2016-04-11 19:15:17 +02:00
Simone Bordet
5c3e068cb3
Fixes #481 - Event response.success notified without waiting for content callback for HTTP/2 transport.
...
Improved fix, notifying the response.success event using a
CompletableCallback to avoid that HttpReceiver.responseContent()
fails the update from ResponseState.TRANSIENT.
2016-04-11 12:55:37 +02:00
Simone Bordet
5c147288ef
Fixes #481 - Event response.success notified without waiting for content callback for HTTP/2 transport.
...
Fixed by notifying the response.success event only when the callback
is succeeded.
2016-04-04 15:40:25 +02:00
Simone Bordet
4f68d44a50
Fixes #477 - HTTP/2 client transport must not send absolute-form :path pseudo-header.
...
Reducing the target to a path if it is in absolute-form.
2016-04-01 19:16:52 +02:00
Simone Bordet
ce04cadb79
Fixes #233 - Add message to idle TimeoutException.
2016-04-01 14:44:26 +02:00
Greg Wilkins
8b228073e3
Issue #448 - RFC2616 Compliance Mode should track and report RFC7230 violations
...
Efficiency improvements
2016-03-24 11:37:39 +11:00
Simone Bordet
0e0edbb6db
Fixes #441 (Simplify direct HTTP/2 over TLS HttpClient usage)
...
Added useALPN property to HttpClientTransportOverHTTP2 to disable
usage of ALPN and therefore allow direct HTTP/2 over TLS.
2016-03-18 10:49:03 +01:00
Simone Bordet
18aeca6567
Fixes #242 (Expose HTTP/2 LastStream error)
2016-03-16 22:14:09 +01:00
Joakim Erdfelt
13fde643ed
Merge branch 'release-9.3.8' into jetty-9.3.x
2016-03-16 10:03:29 -07:00
Greg Wilkins
1c5a1fc6a2
Issue #431
...
Suppress stack traces from unit tests
2016-03-16 18:19:40 +11:00
Simone Bordet
26f8deddf7
Introduced Callback.Nested.
...
Refactored code that was using nested callbacks and removed
unnecessary overrides now that we have default methods.
2016-03-15 15:24:44 +01:00
Joakim Erdfelt
c68d3b1d8d
Updating to version 9.3.9-SNAPSHOT
2016-03-14 09:07:52 -07:00
Joakim Erdfelt
1f3b3f31f4
Updating to version 9.3.8.v20160314
2016-03-14 08:30:20 -07:00
Simone Bordet
8af356bc0d
Issue #305 (NPE when notifying the session listener if the channel is closed before a session has been opened)
...
Added guard against NPE. It was needed since the connection may not
be present if the connect operation failed.
2016-03-07 17:00:52 +01:00
Simone Bordet
6311c03dcc
Merged pull request #396 .
2016-03-07 10:46:22 +01:00
Greg Wilkins
d1fc5eb67d
Revert "Issue #346 HttpParser RFC2616 Compliance mode"
...
This reverts commit 58e5a54ab6
.
RFC7430 allows empty header values
2016-03-05 11:03:32 +01:00
Greg Wilkins
58e5a54ab6
Issue #346 HttpParser RFC2616 Compliance mode
...
Ignore headers without values.
2016-03-05 11:03:11 +01:00
Jinho Shin
3facfb6066
Add a overridable method 'onClose' in HttpClientTransportOverHTTP2.
...
- able to look GoAwayFrame through 'onClose' method.
Signed-off-by: Jinho Shin <drdoteam@gmail.com>
2016-03-05 12:54:14 +09:00
Simone Bordet
cec3694355
Consistently using BufferUtil, especially clearToFill() and
...
flipToFlush().
2016-02-29 16:31:38 +01:00
Simone Bordet
b8fcc5112f
Issue #372 (Data race in HttpReceiverOverHTTP2)
...
Fixed implementations of onData() to properly complete the callback
and to copy the data if they use it asynchronously.
2016-02-29 14:39:27 +01:00
Simone Bordet
aa6de825b7
Issue #372 (Data race in HttpReceiverOverHTTP2)
...
Fixed by copying the buffer passed to onData().
2016-02-29 14:02:17 +01:00
Simone Bordet
aadfae936c
Issue #366 (Avoid HTTP2Flusher reentrancy).
...
Made HTTP2Flusher termination to be atomic and non-reentrant.
2016-02-29 11:32:39 +01:00
Greg Wilkins
55eb54799f
Issue #346 HttpParser RFC2616 Compliance mode
...
Added HttpParser.Compliance field to HttpConnectionFactory
2016-02-19 11:41:07 +01:00
Simone Bordet
48c4e08b94
Issue #347 (Avoid sending request using a connection that is idle timing out).
...
Fixed by improving the guard with a timestamp, and checking that the
time elapsed from the last timestamp is enough to prove it is a real
idle timeout.
2016-02-19 11:36:06 +01:00
Simone Bordet
1cce6fd69f
Improved logging.
2016-02-19 11:36:06 +01:00
Simone Bordet
26b6c848f3
Issue #80 (Spin loop in case of HTTP/2 prefaces without H2C).
...
Fixed by changing the state of the parser before calling the parser
handler callbacks, and by closing the parser if the upgrade to HTTP/2
is not successful.
2016-02-15 20:50:22 +01:00
Simone Bordet
0eef227e84
487750 - HTTP/2 push must not be recursive.
...
Avoid recursive pushes by pushing the whole resource tree on the
primary request, and avoid pushes for synthetic requests generated by
the pushes.
2016-02-13 11:15:58 +01:00
Simone Bordet
a1a8f6aeae
486589 - HttpRequest has a wrong HTTP Version in HTTP/2.
2016-02-10 15:04:36 +01:00
Simone Bordet
6306f06e2f
Merged branch 'jetty-9.2.x' into 'jetty-9.3.x'.
2016-02-09 18:12:04 +01:00
Simone Bordet
4a7fae30fb
486829 - Cancel stream error after a failed request with the HTTP/2.0 client.
...
Fixed by properly notifying the callback even when the exchange has
already been aborted.
2016-02-05 18:12:37 +01:00
Simone Bordet
98cd85287c
487354 - Aborted request or response does not send RST_STREAM frame.
...
Fixed by sending a RST_STREAM frame when the channel is aborted.
2016-02-05 18:12:37 +01:00
Simone Bordet
460c778ca1
Added Javadocs.
2016-02-05 18:12:37 +01:00
Joakim Erdfelt
e0ce545ad7
Updating to version 9.3.8-SNAPSHOT
2016-01-15 17:15:14 -07:00
Joakim Erdfelt
c0b191119b
Updating to version 9.3.7.v20160115
2016-01-15 16:40:15 -07:00
Joakim Erdfelt
b7f9c9aca9
Updating to version 9.3.7-SNAPSHOT
2016-01-13 08:21:01 -07:00
Joakim Erdfelt
21ca3f6690
Updating to version 9.3.7.RC1
2016-01-13 07:30:24 -07:00
Joakim Erdfelt
cd39fd84fe
Happy New Year 2016
2016-01-04 14:31:22 -07:00
Simone Bordet
fdadc942e9
484818 - Expose interesting HTTP/2 attributes and operations via JMX.
...
Added flow control stall times and improved dump().
2015-12-28 14:30:24 +01:00
Simone Bordet
997b868ecd
484878 - Make BufferingFlowControlStrategy.bufferRatio configurable via JMX.
...
Made the property writable.
2015-12-24 12:10:20 +01:00
Simone Bordet
7598062bbb
Improved logging.
2015-12-24 10:36:17 +01:00
Simone Bordet
30694b675b
484876 - Make simpler to customize the FlowControlStrategy.
...
Introduced FlowControlStrategy.Factory along with getters and setters
in relevant classes.
2015-12-24 10:32:36 +01:00
Simone Bordet
59680d47d3
484818 - Expose interesting HTTP/2 attributes and operations via JMX.
...
Exposed number of session stalls.
2015-12-23 16:19:08 +01:00
Simone Bordet
7a33efdf66
484861 - Improve FlowControlStrategy stall handling.
...
Changed the way on[Session|Stream]Stalled() is notified.
Instead that from within the HTTP2Flusher, those methods are now
called from onDataSending(), invoking them only once per stall.
2015-12-23 15:42:25 +01:00
Simone Bordet
a5983c560a
Avoid allocating the ALPNClientConnectionFactory if there is no
...
SslContextFactory.
2015-12-23 11:20:19 +01:00
Simone Bordet
14a3b2eab2
484818 - Expose interesting HTTP/2 attributes and operations via JMX.
...
Initial work to expose already existing attributes on the client.
2015-12-23 11:08:25 +01:00
Simone Bordet
b7ab9e0a22
484818 - Expose interesting HTTP/2 attributes and operations via JMX.
...
Initial work to expose already existing attributes on the server.
2015-12-23 11:08:25 +01:00
Simone Bordet
8f4cc73613
484585 - Avoid sending request using a connection that is idle timing out.
...
Rewritten handling of idle timeouts in light of issue #484718 .
2015-12-21 11:47:05 +01:00
Simone Bordet
988e596c71
484585 - Avoid sending request using a connection that is idle timing out.
...
Added guard to avoid that the idle timeout expires just before
sending the request.
Reworked the way idle timeouts are handled, to support the case where
the idle timeout just expired and the request can be tried on a
different connection/channel.
2015-12-18 15:56:31 +01:00
Simone Bordet
4eef2a347f
Added factory method to create the HttpChannel.
2015-12-18 15:56:31 +01:00
Simone Bordet
717fc7819d
484262 - Race condition between GOAWAY disconnect and ability to make new request.
...
Fixed by making sure that when a peer received a GOAWAY frame, it
does not also notify the onFailure() callback.
2015-12-15 15:35:04 +01:00
Simone Bordet
d4d9ceea86
Improved toString().
2015-12-15 14:11:56 +01:00
Simone Bordet
8d28be5786
484210 - HttpClient over HTTP/2 should honor maxConcurrentStreams.
...
Fixed by sending queued requests in a loop up to maxConcurrentStreams.
Also updating the maxConcurrentStreams value when received from the
server.
2015-12-11 18:00:48 +01:00
Simone Bordet
e674d3ec5e
483878 - Parallel requests stuck via the http client transport over HTTP/2.
2015-12-11 17:58:31 +01:00
Simone Bordet
77e0df1193
484167 - GOAWAY frames aren't handling disconnects appropriately on Client.
...
Improved handling of the failure case.
2015-12-11 12:34:48 +01:00
Simone Bordet
c3889873f6
484167 - GOAWAY frames aren't handling disconnects appropriately on Client.
...
Fixed by overriding onClose() to listen for GOAWAY frames, and acting
appropriately.
2015-12-11 12:25:54 +01:00
Simone Bordet
e7d8980952
Improved generate/parse tests.
2015-12-09 11:56:49 +01:00
Simone Bordet
35da4a3c54
483878 - Parallel requests stuck via the http client transport over HTTP/2.
...
Fixed by recycling correctly the blockBuffer.
2015-12-09 11:56:26 +01:00
Greg Wilkins
a2c057892e
483039 - HTTP2 Upgrade case sensitivity on Connection header
2015-11-26 07:06:38 +11:00
Simone Bordet
3c54806d47
482959 - Local stream count never decrements when closing a stream causing IllegalStateException.
...
This issue was caused by removeStream(IStream, boolean) to take a
boolean parameter that indicated whether the close of the stream was
caused by a sent frame (local) or by a received frame (remote).
However, this was wrong, since a local stream may be closed by
receiving a frame. This error was causing the local and remote stream
counts held by HTTP2Session to be decremented wrongly, causing the
IllegalStateException mentioned in the bug report.
Fixed by decrementing the stream counters based on whether the stream
itself is local or remote.
2015-11-25 12:58:02 +01:00
Simone Bordet
f596bf1566
Improved javadocs for onPreface().
2015-11-25 12:58:02 +01:00
Simone Bordet
793c816c66
Improved logging.
2015-11-18 19:25:34 +01:00
Joakim Erdfelt
edf686fe0a
Updating to version 9.3.7-SNAPSHOT
2015-11-06 12:13:00 -07:00
Joakim Erdfelt
d737e1c638
Updating to version 9.3.6.v20151106
2015-11-06 11:09:32 -07:00
Simone Bordet
58027a3421
481225 - Secondary resources with query parameters are not properly pushed.
...
Fixed by making PushCacheFilter remember the query parameters for
secondary resources, so that the PUSH_PROMISE frame can be correctly
generated with the query parameters.
2015-11-02 11:37:17 +01:00
Simone Bordet
cbb7be040f
480260 - HPack decode error for buffers with offset.
...
Fixed calculations to advance the ByteBuffer.
2015-10-20 23:19:10 +02:00
Simone Bordet
3c26ffb227
480061 - HTTP/2 server doesn't send GOAWAY frame when shutting down.
...
Fixed by overriding Connection.close() and sending the GOAWAY from
there, which is triggered when the SelectorManager stops.
This allowed simplification of client code too.
2015-10-19 12:18:01 +02:00
Joakim Erdfelt
dde32787c4
Updating to version 9.3.6-SNAPSHOT
2015-10-12 15:47:37 -07:00
Joakim Erdfelt
29722bd880
Updating to version 9.3.5.v20151012
2015-10-12 15:10:39 -07:00
Simone Bordet
ccbd626cb2
479537 - Server preface sent after client preface reply.
...
Fixed by anticipating the onPreface() callback on server before
processing the client preface's SETTINGS frame.
2015-10-12 18:36:53 +02:00
Joakim Erdfelt
2cce7510e1
Updating to 9.3.5-SNAPSHOT
2015-10-08 17:49:09 -07:00
Joakim Erdfelt
37296bec3c
Updating to version 9.3.4.v20151007
2015-10-07 14:58:38 -07:00
Simone Bordet
0ca40b59c6
479277 - HttpClient with HTTP/2 transport does not work for "https" URLs.
...
Fixed by reworking how ClientConnectionFactories are handled by both
HTTP2Client and by HttpClientTransportOverHTTP2, to avoid that the
latter wraps the nested factories with SslConnection twice.
2015-10-07 21:39:02 +02:00
Simone Bordet
6300480c0b
Forwarding HttpClient properties to HTTP2Client at startup.
2015-09-29 12:16:00 +02:00
Simone Bordet
64ba5a6ef8
Improved usability of PingFrame.
2015-09-27 17:03:29 +02:00
Simone Bordet
83c5105e71
478434 - Priority weights should be between 1 and 256 inclusive.
...
Added required +1 in parsers and -1 in generators to convert from
unsigned byte to weight.
2015-09-26 00:14:45 +02:00
Simone Bordet
3dcdb9f802
Merged branch '477878' into 'master'.
2015-09-25 19:34:45 +02:00
Simone Bordet
3201d0acd2
477878 - HttpClient over HTTP/2 doesn't close upload stream.
...
Clarified the difference between last and consumed in HttpContent.
Fixed HTTP/2 transport to behave correctly in case of last content.
2015-09-25 19:31:40 +02:00
Simone Bordet
0c9eba0485
478275 - Priority information in HEADERS frame is not sent.
...
Now the priority information present in HEADERS frame is correctly
generated and sent as part of the HEADERS frame.
2015-09-25 13:00:26 +02:00
Simone Bordet
394c105d5d
Cosmetics.
2015-09-25 12:39:53 +02:00
Simone Bordet
f833f36c64
Cosmetics.
2015-09-21 09:34:15 +02:00
Simone Bordet
d0bc20385a
477885 - Jetty HTTP2 client fails to connect with Netty server - HTTP2 client preface missing or corrupt.
...
Fixed by starting to read from the server only after having sent the
client preface.
2015-09-20 16:55:22 +02:00