Commit Graph

652 Commits

Author SHA1 Message Date
Simone Bordet 997b868ecd 484878 - Make BufferingFlowControlStrategy.bufferRatio configurable via JMX.
Made the property writable.
2015-12-24 12:10:20 +01:00
Simone Bordet c66a4d5aa7 Merged branch 'jetty-9.3.x' into 'master'. 2015-12-24 10:47:10 +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 8045b0cf67 Merged branch 'jetty-9.3.x' into 'master'. 2015-12-23 16:21:53 +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 802948259e Merged branch 'jetty-9.3.x' into 'master'. 2015-12-23 11:26:11 +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 3fb354f884 Merged branch 'jetty-9.3.x' into 'master'. 2015-12-21 13:02:04 +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 ca6eaafdbf Merged branch 'jetty-9.3.x' into 'master'. 2015-12-15 15:42:36 +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 829bdd3d7c Merged branch 'jetty-9.3.x' into 'master'. 2015-12-11 21:39:03 +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 1bba40a549 Merged branch 'jetty-9.3.x' into 'master'. 2015-12-11 12:35:15 +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 8542715665 Merged branch 'jetty-9.3.x' into 'master'. 2015-12-11 12:26:47 +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 fc4aacc38a Merged branch 'jetty-9.3.x' into 'master'. 2015-12-09 11:57:38 +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 ac124094dd Merge remote-tracking branch 'origin/jetty-9.3.x' 2015-11-26 07:08:06 +11:00
Greg Wilkins a2c057892e 483039 - HTTP2 Upgrade case sensitivity on Connection header 2015-11-26 07:06:38 +11:00
Simone Bordet 50041395f9 Merged branch 'jetty-9.3.x' into 'master'. 2015-11-25 14:00:19 +01: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 65d33f8b49 Merged branch 'jetty-9.3.x' into 'master'. 2015-11-18 21:40:51 +01:00
Simone Bordet 793c816c66 Improved logging. 2015-11-18 19:25:34 +01:00
Greg Wilkins ff0d1b4c14 481903 Module Descriptions 2015-11-12 10:48:04 +11:00
Simone Bordet 279e56d336 481718 - Improve stream interleaving.
Introduced the constraint in the API that Stream.headers() and
Stream.data() calls cannot be invoked if the previous operation did
not complete.

Improved interleaving by appending unfinished DATA frames at the end
of the queue, rather than prepending them.
2015-11-09 21:58:48 +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
Greg Wilkins 7843b7348e 480827 Implemented Unix Domain Socket Connector
Squashed commit of the following:

commit fbb680ba7cdb73495524ea9e5b0f49caee7f68d8
Merge: ed2550b 64ea0db
Author: Greg Wilkins <gregw@webtide.com>
Date:   Fri Nov 6 10:44:00 2015 +1100

    Merge branch 'master' into unix-socket

commit ed2550b50f978e1984e19fbda642baf450dbe6a1
Merge: 88d7b35 de137ab
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Nov 5 18:41:25 2015 +1100

    Merge branch 'master' into unix-socket

commit 88d7b35f885de2da7dec836e6e4ae2b522d517f0
Merge: 7d4155f 3e2658a
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Nov 5 17:38:27 2015 +1100

    Merge branch 'master' into unix-socket

commit 7d4155fe4a407d493683b66709bc638879b0b422
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Nov 5 17:24:48 2015 +1100

    Unix socket configuration

commit 2737b19f73ad153c20e1762874558a5d62849f90
Merge: cd0cc2e 92cc44c
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Nov 4 15:13:40 2015 +1100

    Merge branch 'master' into unix-socket

    Conflicts:
    	jetty-server/src/main/java/org/eclipse/jetty/server/SecureRequestCustomizer.java

commit cd0cc2ef36a558d948bf26aff4f9e3519da2f823
Merge: 639753b 303f98e
Author: Greg Wilkins <gregw@webtide.com>
Date:   Mon Nov 2 12:21:19 2015 +1100

    Merge branch 'master' into unix-socket

commit 639753b5ed37778d7231acfe9d52039aed66351e
Author: Greg Wilkins <gregw@webtide.com>
Date:   Fri Oct 30 15:42:58 2015 +1100

    local connectors report NOIP address

commit 6d38c4195f145b99f775a06d546960b119094b0c
Author: Greg Wilkins <gregw@webtide.com>
Date:   Fri Oct 30 12:11:13 2015 +1100

    Gentler ssl close test

commit 40b46b66a738c9187f859d522a0165bb09b113c8
Merge: b7eb082 fa53b11
Author: Greg Wilkins <gregw@webtide.com>
Date:   Fri Oct 30 11:09:42 2015 +1100

    Merge branch 'master' into unix-socket

commit b7eb082be44864c058b6f01b10364013596d3650
Author: Greg Wilkins <gregw@webtide.com>
Date:   Fri Oct 30 08:34:30 2015 +1100

    SecureRequestCustomizer for UnixSockets

commit edbb3c080200b4c6aa2836eff6c81bf31a73a8c1
Merge: 90e8cc0 de7ac72
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Oct 29 19:47:05 2015 +1100

    Merge branch 'master' into unix-socket

commit 90e8cc060ff6dc4b249818db38334ffa543f002f
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Oct 29 19:31:50 2015 +1100

    use proxy connection

commit b1772ef5dcac9ddf9bb5ecda1cda6d038ca21755
Merge: e95a932 9fe7332
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Oct 29 16:46:29 2015 +1100

    Merge branch 'master' into unix-socket

commit e95a932bda5a96bf98ada4fb47664790af2aa0a2
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Oct 28 15:58:25 2015 +1100

    fixed config

commit f8963b2ed6b6b4b96f1d9403194c9d50ab1f12fd
Merge: 9c56b53 8b27484
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Oct 28 15:34:28 2015 +1100

    Merge branch 'master' into unix-socket

commit 9c56b53cbec20d98e5cb05cf8d1f668fe84b95e0
Merge: 298a311 39768f8
Author: Greg Wilkins <gregw@webtide.com>
Date:   Mon Oct 26 13:04:34 2015 +1100

    Merge branch 'master' into unix-socket

commit 298a311af952ad3ef5d1c7635deabf47bddaa1c6
Author: Greg Wilkins <gregw@webtide.com>
Date:   Fri Oct 23 15:24:19 2015 +1100

    Async accepting

commit 8266753d124c04ec8bca8aa02be1ef3d826d6769
Author: Greg Wilkins <gregw@webtide.com>
Date:   Fri Oct 23 14:45:35 2015 +1100

    set acceptors

commit 6a56c5b9e19063fcb95cdc1228adf723c0d41362
Author: Greg Wilkins <gregw@webtide.com>
Date:   Fri Oct 23 11:44:54 2015 +1100

    licence

commit d80e5748e6c4327bae57de2af01983990dd2afe0
Author: Greg Wilkins <gregw@webtide.com>
Date:   Fri Oct 23 11:24:14 2015 +1100

    unixsocket work in progress adding modules

commit cf0c1153d9966cc7182ba29411527b4341c34da6
Merge: 645b671 c39bfa2
Author: Greg Wilkins <gregw@webtide.com>
Date:   Fri Oct 23 08:52:01 2015 +1100

    Merge branch 'master' into unix-socket

commit 645b6712d37282c26011a95c8c98e45c249b2e5f
Author: Greg Wilkins <gregw@webtide.com>
Date:   Fri Oct 23 08:49:52 2015 +1100

    IP headers

commit 67b210b9ea81af68ce3848a114bbbd1b80a8ca52
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Oct 22 23:48:57 2015 +1100

    working with haproxy

commit e4fce9cf5d896a9a29a7c6280fcaa0336dfcc0f2
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Oct 22 18:25:09 2015 +1100

    unixsocket working

commit 6f013788cad44e6641cd89720c5e7f3652cdc257
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Oct 22 15:39:55 2015 +1100

    work in progress
2015-11-06 11:17:46 +11:00
Simone Bordet 5062756135 Merged branch 'jetty-9.3.x' into 'master'. 2015-11-02 12:17:00 +01: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 0bd1e0ad7d 481116 - Introduce connection pooling also for HTTP/2 transport.
Implemented connection pooling for multiplexed transports.
Reworked the ConnectionPool code and its relationship with
HttpDestination.
2015-10-30 15:33:12 +01:00
Greg Wilkins 9fe7332413 Implemented v2 of the ProxyConnection protocol 2015-10-29 16:45:50 +11:00
Simone Bordet 5c8c590398 Merged branch 'jetty-9.3.x' into 'master'. 2015-10-20 23:23:25 +02: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 964afc3020 Merged branch 'jetty-9.3.x' into 'master'. 2015-10-19 12:35:26 +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
Simone Bordet 3fd8a2e666 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 17:52:19 +02:00
Joakim Erdfelt 2cce7510e1 Updating to 9.3.5-SNAPSHOT 2015-10-08 17:49:09 -07:00
Joakim Erdfelt 9cf0e34a1d Updating to version 9.4.0-SNAPSHOT 2015-10-07 15:41:32 -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
Simone Bordet edce119c0e 477270 - Add ability to send a single PRIORITY frame.
Also fixed the mistake of sending the stream id as the parent stream id.
2015-09-14 11:51:19 +02:00
Simone Bordet dbd66b131b Introduced a HeadersFrame constructor for HEADERS frames with
unspecified stream id, to be used when creating new frames.
2015-09-14 11:51:19 +02:00
Simone Bordet 30532786cc Improved logging. 2015-09-14 11:51:19 +02:00
Simone Bordet f2a3bd8f05 477087 - Enforce that the preface contains a SETTINGS frame.
Now the ServerParser enforces that the preface bytes are followed by
a SETTINGS frame.
2015-09-10 19:04:47 +02:00
Jesse McConnell 6409366499 [maven-release-plugin] prepare for next development iteration 2015-08-27 10:11:29 -05:00
Jesse McConnell 3086adc965 [maven-release-plugin] prepare release jetty-9.3.3.v20150827 2015-08-27 10:11:21 -05:00
Jesse McConnell f8734f23ce [maven-release-plugin] prepare for next development iteration 2015-08-25 14:10:01 -05:00
Jesse McConnell e9edf4c24b [maven-release-plugin] prepare release jetty-9.3.3.v20150825 2015-08-25 14:09:54 -05:00
Simone Bordet 545fa0f72b 475605 - Add support for multi-homed destinations.
If DNS lookup returns multiple IP addresses, HttpClient tries to
connect to the first; failing that, to the second, and so on.
2015-08-24 12:31:08 +02:00
Simone Bordet fd335d6c3e Guarded against NPE. 2015-08-20 16:31:09 +02:00
Simone Bordet 69b90ef59b 474888 - HttpClient JMX support. 2015-08-13 15:16:14 +02:00
Simone Bordet aa684a5dcc 470311 - Introduce a proxy-protocol module.
Support for the PROXY protocol is now enabled via 2 new modules:
proxy-protocol and proxy-protocol-ssl, respectively for the HTTP
connector and the SSL connector.
2015-08-11 12:17:24 +02:00
Joakim Erdfelt 3c99c9c9b9 Merge branch 'release-9.3.2' 2015-08-03 10:27:52 -07:00
Simone Bordet 2a4095590d 473955 - NPE in PushCacheFilter.
Fixed by normalizing to "/" the missing path of a referrer URI.
2015-07-30 19:48:38 +02:00
Joakim Erdfelt 4b3879845d [maven-release-plugin] prepare for next development iteration 2015-07-30 07:02:10 -07:00
Joakim Erdfelt 6b7e9ac4b0 [maven-release-plugin] prepare release jetty-9.3.2.v20150730 2015-07-30 07:02:02 -07:00
Simone Bordet 25ed10d205 473118 - HTTP/2 server does not retrieve Host header from client. 2015-07-28 12:26:53 +02:00
Greg Wilkins 607239028c 470727 - Thread Starvation of selector wakeups.
Changed the CallBack.NonBlocking to a default Callback.isNonBlocking, so that wrapping callbacks can determine if they are NonBlocking or not.
2015-07-22 17:31:54 +10:00
Jesse McConnell 9b790c38ce [maven-release-plugin] prepare for next development iteration 2015-07-14 11:42:34 -05:00
Jesse McConnell b35d32f2b8 [maven-release-plugin] prepare release jetty-9.3.1.v20150714 2015-07-14 11:42:28 -05:00
Simone Bordet 9549001d8c 472422 - Custom status codes result in a NumberFormatException while using http2.
Fixed constructor that was passing the name as the value.
Also other cleanups.
2015-07-11 16:30:05 +02:00
Simone Bordet c367ea8a85 441020 - Support HEADERS followed by CONTINUATION+. 2015-07-08 18:55:47 +02:00
Greg Wilkins 30f8eb234e Allow HTTP2C to be configured separately from HTTP2 2015-06-17 15:01:17 +10:00
Joakim Erdfelt cf6c4a914e Updating version to 9.3.1-SNAPSHOT 2015-06-15 10:25:49 -07:00
Joakim Erdfelt 1a9da9f9e4 Updating versions to 9.3.0.v20150612 2015-06-12 09:34:24 -07:00
Joakim Erdfelt c6ac82f50b Merge branch 'master' into release-9.3 2015-06-12 09:30:46 -07:00
Joakim Erdfelt 7c737a587b Removing [version] sections in modules 2015-06-12 09:14:34 -07:00
Joakim Erdfelt 496b4dfc83 [maven-release-plugin] prepare for next development iteration 2015-06-11 15:08:36 -07:00
Joakim Erdfelt f53c5d8fac [maven-release-plugin] prepare release jetty-9.3.0.v20150611 2015-06-11 15:08:29 -07:00
Joakim Erdfelt 916efd6aa7 469860 - Add module metadata versioning to support backwards compat
+ Adding [version] section to all existing jetty 9.3 distro modules
+ Updating testcases in jetty-start with new [version] sections too
+ Adding extra testcases for versioned modules
2015-06-10 10:59:18 -07:00
Simone Bordet a6ff4da9b1 Made the cipher comparator a constant field. 2015-05-26 18:03:55 +02:00
Simone Bordet 1a6db17799 Added test for push with query parameters. 2015-05-26 18:03:55 +02:00
Simone Bordet 3288eb392f 468313 - PushCacheFilter wrongly associates primary resources to themselves.
Fixed by not associating secondary resources that are the same as the
primary resource.
2015-05-26 18:03:55 +02:00
Greg Wilkins bd27e7d2d4 467730 - HTTP2 requires enabled ciphers to be sorted by blacklist 2015-05-21 01:41:12 +10:00
Greg Wilkins 356600716d Draft 14 9.2.2 protection 2015-05-13 10:26:45 +10:00
Greg Wilkins 5d041ad54f 466645 Allow XmlConfiguration Properties to use Elements or Attributes 2015-05-07 16:24:11 +10:00
Simone Bordet 80f46432da Updated example to show also pushed resources. 2015-05-04 12:33:10 +02:00
Simone Bordet 39591f3443 466283 - Support specifying ALPN protocols in HTTP2Client. 2015-05-04 12:33:10 +02:00
Simone Bordet 64033e0958 Improved toString(). 2015-05-04 12:33:10 +02:00
Greg Wilkins 8b39e7ffb8 464629 JDK8 Socket customization
Added the SocketCustomizationListener class which may be added as a bean to either a Connector or a ConnectionFactory
so that customizations may be made per connector by connection type or even per connection factory.

SSL is unwrapped.
2015-04-30 11:46:10 +10:00
Simone Bordet a6cc4ff2f5 465857 - Support HTTP/2 clear-text server-side upgrade.
Fixed and test both types of upgrade, from HTTP/1.1 via its
upgrade mechanism, and direct HTTP/2.
2015-04-29 22:27:50 +02:00
Simone Bordet df63400dbe Introduced overridable configure(SocketChannel) method.
This allows subclasses to configure the socket with rarely used
options such as the traffic class and or SocketOptions.
2015-04-29 09:46:26 +02:00
Simone Bordet 2de8eb936d 464708 - Support HttpConfiguration.delayDispatchUntilContent in HTTP/2. 2015-04-24 12:36:53 +02:00
Simone Bordet 3d5164b651 Hiding exception stack printed by a successful test. 2015-04-24 12:26:36 +02:00
Joakim Erdfelt 9e6c8eade1 464727 - Update Javadoc for Java 8 DocLint 2015-04-22 12:43:22 -07:00
Simone Bordet e868ab0b0d 464706 - HTTP/2 and async I/O: onDataAvailable() not called.
Changed HTTPServerConnection to return a Runnable to be run by the
execution strategy also in case of content.
This allows onDataAvailable() to be called at the proper times.
2015-04-15 17:21:17 +02:00
Simone Bordet 0360b1cc5b Made test more reliable. 2015-04-14 22:18:45 +02:00
Simone Bordet 55e74c6867 460187 - infinite recursion in sending error.
Added test case.
2015-04-14 22:11:59 +02:00
Simone Bordet 599ab9bb1b 460671 - Rationalize property names.
Property format is now "jetty.<module|component>.<propertyName>".

Updated all references with new properties.
2015-04-13 16:21:48 +02:00
Simone Bordet ffadcd6757 444721 - PushCacheFilter cleanup/improvements.
Ported the "maxAssociations" functionality from SPDY's ReferrerPushStrategy.
Added JMX support.
Removed __renew__ special path in favour of a JMX method.
Added clearPushCache() JMX method.
Made push reentrant by eliminating the check for "org.eclipse.jetty.pushed".
2015-04-10 15:22:49 +02:00
Greg Wilkins 663ff827ed Blacklist ciphers only for h2-16 and later 2015-04-09 10:31:45 +10:00
Greg Wilkins 1cb0449be3 Organised imports 2015-03-26 12:32:15 +11:00
Simone Bordet 999177ccc2 Fixed race sending SETTINGS with INITIAL_WINDOW_SIZE.
Before, the sender was updating the window size after the SETTINGS
frame was written.
This was leading to a race where the receiver saw the updated window
size and sent DATA frames; these were received by the original sender
before it had the chance to update its local window size, causing an
error.
Now, the update of the window size happen just before writing the
SETTINGS frame to avoid this race.
2015-03-25 19:24:28 +01:00
Simone Bordet d20c7707b7 Merged branch 'jetty-9.2.x' into 'master'. 2015-03-24 20:56:26 +01:00
Simone Bordet e255bda694 459845 - Support upgrade from http1 to http2.
Simplified upgrade mechanism, and made it available through clearer
internal APIs.
2015-03-20 15:02:40 +01:00
Simone Bordet 2a21f8cb2f Renamed ISession.control() to ISession.frames(). 2015-03-20 15:02:07 +01:00
Simone Bordet 4107444beb Tests for async proxy functionality. 2015-03-20 14:53:11 +01:00
Greg Wilkins caacebc223 459845 - Support upgrade from http1 to http2
functioning implementation.  Not exactly the most elegant solution, but works with nghttp2 -u
2015-03-19 12:02:54 +11:00
Simone Bordet 81f29576e6 Prevented NPE in abort(). 2015-03-16 08:17:25 +01:00
Simone Bordet 4f0c63734c 462162 - StackOverflowException when response commit fails.
Fixed HttpChannel to avoid to stack overflow in case of unusual
exceptions thrown while committing.
Now it directly calls the transport to try to send a 500.
2015-03-15 12:10:27 +01:00
Greg Wilkins 3f795da26c 459845 - Support upgrade from http1 to http2
Generalised Upgrade Connection Factories
2015-03-13 13:59:29 +11:00
Simone Bordet ffb15aa5fb Made test more reliable.
Testing for stream.isClosed() is done in StreamCloseTest.
The tests were failing because receiving the headers does not mean
the sending the headers has notified the callback yet, and hence
closed the stream.
2015-03-12 20:54:40 +01:00
Simone Bordet feed8ea158 Small refactoring of HTTP/2 upgrade code. 2015-03-12 19:08:26 +01:00
Greg Wilkins b7d719be5f 459845 - Support upgrade from http1 to http2
Parse setting frame.
2015-03-13 00:54:33 +11:00
Simone Bordet 005870811d Fixed compilation issue: using Jetty's B64Code instead of JDK8 Base64. 2015-03-12 11:06:30 +01:00
Greg Wilkins 0dd58d2efe 459845 - Support upgrade from http1 to http2
Moved the sneaky direct upgrade to its own method and added support to detect a standard upgrade.
The standard upgrade now creates the h2c connection and decodes the settings header, but it does not yet process the
settings nor send a response to the request.
2015-03-12 16:52:17 +11:00
Simone Bordet a7cfc3dc2d Renamed methods in FlowControlStrategy. 2015-03-11 20:38:40 +01:00
Simone Bordet 36f317382f More flow control tests. 2015-03-11 18:43:00 +01:00
Simone Bordet 8673c6bba7 Clarified test and made it more reliable. 2015-03-11 17:12:38 +01:00
Simone Bordet 1dbf2be343 423974 - Optimize flow control.
Don't send the window update if the stream is closed.
2015-03-11 17:11:16 +01:00
Simone Bordet 560ec6301e 423974 - Optimize flow control.
Made the buffering flow control strategy the default.
2015-03-11 16:27:31 +01:00
Simone Bordet 48887377c9 459081 - http2 push failures.
Introduced ExecutionStrategy.dispatch() to handle the case where
resources that are being pushed block.
2015-03-11 00:12:57 +01:00
Simone Bordet 4caf991e44 Made test run only under JDK 8. 2015-03-02 16:39:31 +01:00
Simone Bordet 9f76995086 Restored ALPN tests. 2015-03-02 13:17:26 +01:00
Simone Bordet 73821e7ac6 461052 - Local streams created after INITIAL_WINDOW_SIZE setting have wrong send window.
Fixed by tracking both send and recv initial stream windows.
This is needed because both client and server may send an
INITIAL_WINDOW_SIZE setting, and they must be treated
separately.
2015-02-27 19:21:35 +01:00
Simone Bordet b533aa6ce5 Made tests more stable.
Naked writes could throw WritePendingException.
Now we wait until the client has finished sending the reply to the
server SETTINGS frame, then we do the naked write.
2015-02-27 12:30:42 +01:00
Simone Bordet 7c315ebce5 Fixed test. 2015-02-24 15:59:32 +01:00
Simone Bordet 6ad90c259c Fixed test. 2015-02-24 14:51:30 +01:00
Joakim Erdfelt aac427ab8c Fixing compile error 2015-02-23 18:16:30 -07:00
Greg Wilkins 5d6bb9f5d0 460210 - ExecutionStragegy producer for SelectManager calls onOpen from produce method
Additional refactoring to better handle HttpInput state.   Moved the unready and read possible states into the HttpChannelState
2015-02-23 23:06:23 +11:00
Simone Bordet 58ea526b56 Notifying client connection's promise from onOpen().
The client connection's promise was succeeded in the context of a
call to SelectorManager.newConnection().
This was wrong, since succeeding the promise may trigger the send
of a request *before* the connection is actually linked to the
endPoint and opened.

This change moves the succeeding of the client connection's promise
to the connection onOpen() method.
2015-02-20 18:23:31 +01:00
Joakim Erdfelt 08b4bd439e Fixing tests on http2-hpack
+ HttpField.nameHashCode() fixed to actually be US-ASCII case
  insensitive per documentation
+ Since removal of MetaData equals/hashcode, the comparison
  of the MetaData and MetaData.Response is now done entirely
  within the HpackTest
2015-02-20 10:16:03 -07:00
Greg Wilkins b60ea47ef4 Revert "Revert "Fixed AsyncIO double dispatch""
This reverts commit 8bd94ec6be.
This is a revert of the revert to add back in the useful debug, plus some TODO comments describing the problems
2015-02-20 00:18:29 +11:00
Greg Wilkins 8bd94ec6be Revert "Fixed AsyncIO double dispatch"
This reverts commit 968063c1ab.
2015-02-20 00:03:40 +11:00
Greg Wilkins 968063c1ab Fixed AsyncIO double dispatch 2015-02-19 18:13:31 +11:00
Simone Bordet 59ae845d30 Guarding against null streams when resetting.
This is possible when receiving a frame for a non-existent stream:
it is replied with a reset, but the stream object is never created.
2015-02-18 23:00:37 +01:00
Simone Bordet 84b8882624 Using TestTracker Rule in test classes. 2015-02-18 23:00:37 +01:00
Simone Bordet d4809e9b79 Improved handling of the stream close state.
Now the stream close state is updated when the frame has been
successfully written, and when it is received.
The stream is closed in case of failures.
Just after the stream close state update, if the stream is closed
then it is removed from the session.
2015-02-18 23:00:37 +01:00
Greg Wilkins e18573f4a3 460211 Fixed Idle race in ExecuteProduceRun
Reimplemented ExecuteProduceRun with a spin lock
2015-02-18 21:47:22 +11:00
Greg Wilkins cb5d91df19 ignored bad http2 client test 2015-02-18 09:20:27 +11:00
Simone Bordet fbf7679e34 Fixed compilation issue after merge. 2015-02-15 20:54:36 +01:00
Simone Bordet 28b9a0927c Merged branch 'jetty-9.2.x' into 'master'. 2015-02-15 20:51:49 +01:00
Simone Bordet 5a40ed5a0d Fixed test, and added test to check close state of pushed streams. 2015-02-13 18:08:39 +01:00
Simone Bordet ff7e0e626a Implemented notification of session failure events. 2015-02-13 14:18:08 +01:00
Simone Bordet 9677988960 Removed TODO. 2015-02-13 13:11:59 +01:00
Greg Wilkins a2e051c4e0 made StreamResetTest test less of a race 2015-02-13 16:15:08 +11:00
Greg Wilkins c090f179a7 459845 - Support upgrade from http1 to http2/websocket
Added jetty-http2c.xml and http2c.mod
2015-02-13 15:06:24 +11:00
Greg Wilkins 4db654ad32 Organised http2 imports 2015-02-13 13:43:32 +11:00
Greg Wilkins 98e3a28794 459845 - Support upgrade from http1 to http2/websocket
Added test harness for h2c upgrade.
2015-02-13 13:41:14 +11:00
Greg Wilkins c3332e7d2e 459845 - Support upgrade from http1 to http2/websocket
Added support for unofficial "upgrade" from http/1 to h2c
2015-02-13 12:16:03 +11:00
Joakim Erdfelt 7811c10727 Fixing http2-client test quirk when 2015-02-12 14:42:02 -07:00
Simone Bordet 0677735550 Simplified HTTP/2 parser and its listener.
It is not possible to perform asynchronous processing of the content
of DATA frames, because otherwise the parser has to stop, stalling
all other streams.
Parser.Listener methods were returning boolean in a vestigial attempt
to handle asynchronous data processing, and have now been converted to
return void.
2015-02-12 19:43:52 +01:00
Greg Wilkins a147cee480 459731 - Update for drafts hpack-11 and http2-17 2015-02-12 14:45:12 +11:00
Jan Bartel b45389ad87 Fix http2 osgi manifests and tests 2015-02-12 10:32:16 +11:00
Joakim Erdfelt 20fa13605c 459655 - Remove SPDY and NPN
+ Flattening protonego-* to alpn.mod + alpn-impl/alpn-${java.version}
2015-02-11 10:58:10 -07:00
Simone Bordet 360b72a29e HTTP/2 API Javadocs. 2015-02-11 17:44:05 +01:00
Simone Bordet be860741d5 459655 - Remove SPDY and NPN.
Cleanup of javadocs, comments, XML and other text files.
2015-02-11 16:18:07 +01:00
Greg Wilkins 2162455b72 Removed SPDY and NPN
Because jetty 9.3 is targetted for HTTP2, we have removed support for SPDY and NPN.
2015-02-11 14:20:06 +11:00
Simone Bordet 44d262c65a Renamed GatheringCallback to CountingCallback. 2015-02-10 13:16:41 +01:00
Simone Bordet 273854835f Made HttpClientTransportOverHTTP2 a ContainerLifeCycle, so that it
can manage the start/stop of HTTP2Client.
2015-02-09 17:33:10 +01:00
Simone Bordet 3855024bba Added tests for HTTP2Client idle timeout. 2015-02-09 16:53:22 +01:00
Simone Bordet f974c74329 Implemented HTTP2Client connect timeout. 2015-02-09 16:22:21 +01:00
Simone Bordet 85edb7e573 Improved configurability of HTTP2Client. 2015-02-09 14:24:09 +01:00
Simone Bordet d0f0aa7c9f Fixed removal of streams upon sending the response HEADERS frame. 2015-02-09 13:26:01 +01:00
Simone Bordet 7066f65e8c 423974 - Optimize flow control.
Implemented a buffering FlowControlStrategy that reduces the amount
of WindowUpdate exchanges.
2015-02-09 13:25:32 +01:00
Simone Bordet fa72356d1d Fixed failure of stalled frames. 2015-02-09 09:11:56 +01:00
Simone Bordet 02b5732720 First take at implementing the HttpClientTransport for HTTP2. 2015-02-09 09:11:56 +01:00
Greg Wilkins 14cd10b676 experimenting with push API 2015-02-06 13:48:34 +11:00
Greg Wilkins f6cfe07a69 added direct buffer configuration 2015-02-05 10:02:01 +11:00
Greg Wilkins e1cc5fb487 Merge remote-tracking branch 'origin/master' into jetty-9.3-ewyk
Conflicts:
	jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java
	jetty-server/src/main/java/org/eclipse/jetty/server/QueuedHttpInput.java
	jetty-util/src/main/java/org/eclipse/jetty/util/thread/NonBlockingThread.java
2015-01-08 15:21:01 +01:00
Joakim Erdfelt a3201a3c81 Happy New Year 2015 2015-01-07 17:06:59 -07:00
Simone Bordet 5bed6323c1 Reworked buffer releasing to ensure that it is always executed before
fillInterested() is called.
This is needed to avoid race conditions where fillInterested()
triggers a new thread entering onFillable() and acquiring a new buffer
while the previous thread is releasing the previous buffer.
2015-01-02 18:43:07 +01:00
Greg Wilkins beacb948b1 Allow configuration of ExecutionStrategy
eg -Dorg.eclipse.jetty.io.ManagedSelector.ExecutionStrategy=org.eclipse.jetty.util.thread.ExecutionStrategy$ExecuteProduceRun
2015-01-01 17:04:00 +01:00
Greg Wilkins 3af9b145a3 Deprecated the AbstractConnection dispatchIO mechanism 2015-01-01 16:18:13 +01:00
Greg Wilkins 3f59bc4c14 refactored HttpConnector for EWYK - work in progress 2014-12-23 17:15:27 +01:00
Greg Wilkins ebaf84b97e Refactored HttpInput to use poison pills 2014-12-21 10:43:37 +01:00
Simone Bordet 448f150ac4 Cleaned up ExecutionStrategy by adding javadocs, removing methods not
used and renaming classes and methods to better names.
2014-12-19 11:25:09 +01:00
Simone Bordet 4ccd5207b5 Switched ExecutionStrategy to EWYK. 2014-12-18 17:14:34 +01:00
Simone Bordet e35c51eb7d Implemented dispatch to the application using an ExecutionStrategy.
Now instead of having the channel to dispatch when it detects that it
has to call the application (upon receiving a HEADERS frame, or upon
a push "fake" request), now the whole mechanism is controlled by an
ExecutionStrategy.
2014-12-18 17:14:34 +01:00
Simone Bordet 7f98b64658 Clearing the buffer in case of parser errors that lead to a
connection failure.
2014-12-18 17:14:34 +01:00
Simone Bordet 1c2c83e962 Added TODO to remove references to ByteBuffer.array() without
checking whether the ByteBuffer does have a backing array.
2014-12-18 17:14:34 +01:00
Greg Wilkins cdd2b0a9d2 refacted SelectorManager to have a ManagedSelector 2014-12-17 16:29:24 +01:00
Greg Wilkins dfe9dc3115 Further experimentation with PushBuilder 2014-12-09 12:27:39 +01:00
Greg Wilkins 06b1efc182 Added alternate push API and example 2014-12-05 17:47:25 +01:00
Greg Wilkins 7b41e78f74 Improved HttpChannelOverHTTP2 recycling 2014-12-05 08:36:51 +01:00
Greg Wilkins 2536c1cc3f Handle HTTP2-16 black listed ciphers 2014-12-04 14:17:25 +01:00
Greg Wilkins c3472f01c4 updated hpack for draft 10 name changes 2014-12-04 10:27:14 +01:00
Greg Wilkins 4296d84a7b updated hpack for draft 10 name changes 2014-12-04 10:17:06 +01:00
Greg Wilkins 0a144ed3ac 453487 Recycle HttpChannelOverHTTP2
This is an initial recyling of the channel.   The pool is a concurrent linked list, but it may be better to use an array backed list/stack that can easily enforce a maximum pool size.
The pool is currently on the session listener, when it really should be on the HTTP2ServerConnection, but more refactoring is needed for that.
Also the pool is currently inaccessible to the push mechanism
2014-11-28 12:09:59 +11:00
Greg Wilkins f853adb43c fixed debug 2014-11-21 16:01:31 +11:00
Joakim Erdfelt d4d6cfdfa7 Removing virtual module [ssl-protonego]
+ This virtual module, rolled the ssl + protonego + (xml) into
  http2 & spdy modules instead.
2014-11-17 14:08:19 -07:00
Greg Wilkins 5b60e0c98d support h2-15 and h2-14 2014-11-14 10:53:37 +11:00
Greg Wilkins e3bda4efbe 446564 Refactored RequestLog Mechanism
RequestLog can now be set on the HttpChannel and is called during the onCommitted callback.
The RequestLog may be set either on the server or via an updated RequestLogHandler that can
be applied to a specific context.
2014-10-31 13:31:29 +11:00
Greg Wilkins 31e448ffd6 Removed duplication of HttpGenerator$Info vs http.MetaData
Use MetaData throughout code base
2014-10-24 15:51:20 +11:00
Greg Wilkins ec79a6f88e Improve HTTP header pre-encoding
The HttpContent class has been reworked to store HttpField instances, we may be generated on
demand or instances of PreEncodedHttpField.

The encoding of HTTP2 fields has been generalized to handle both indexed and literal fields, selected
by header enum set.

Default servlet and response classes have been cleaned up in how they set response headers.
2014-10-16 12:31:37 +11:00
Greg Wilkins 8c85b2f591 improved http2 static entry generation 2014-10-15 14:04:54 +11:00
Simone Bordet 8d2efaf7eb 445167 - Allow configuration of dispatch after select.
Introduced parameter "dispatchIO" in the relevant factories so that
they can be configured by users and connections will be created
taking into account this parameter.

For less configurable connection factories, this parameter is
currently hardcoded to either true or false depending on the case.
For example, ALPN and NPN connections have it to false, since they
don't do any blocking operation in onFillable().
2014-09-26 10:13:16 +02:00
Simone Bordet a8b461fe91 Cosmetics: removed unused imports, cleaned up source code, improved javadocs. 2014-09-26 10:13:16 +02:00
Simone Bordet 8af9ea4030 Calling notIdle() to avoid the idle timeout triggers when sending frames. 2014-09-26 10:13:16 +02:00
Simone Bordet 9a1acd59fc Made test more robust. 2014-09-26 10:13:15 +02:00
Jesse McConnell 3095a179f9 [maven-release-plugin] prepare for next development iteration 2014-09-24 12:24:31 -05:00
Jesse McConnell 390f3200cc [maven-release-plugin] prepare release jetty-9.3.0.M0 2014-09-24 12:24:23 -05:00
Greg Wilkins a573430840 PushCacheFilter handles multiple hosts and ports 2014-09-22 11:10:13 +10:00
Greg Wilkins fc4bfc8a66 improved debug logging 2014-09-21 15:03:54 +10:00
Simone Bordet 51631c2a46 Made the test more robust, avoiding WritePendingExceptions. 2014-09-19 10:33:09 +02:00
Simone Bordet bfda3620f3 444485 - Client resets stream, pending server data is failed, write hangs.
Fixed by ensuring that when a failure happens, either by catching an
exception or by failing a callback, we always call completed() and
abort the channel (via new method terminate()).
2014-09-18 16:31:16 +02:00
Simone Bordet 418a493337 More simplifications for the send() implementation. 2014-09-18 11:50:18 +02:00
Greg Wilkins 0acee9851f minor cleanups of exceptions 2014-09-18 18:23:48 +10:00
Simone Bordet ef4e0a9e7c Made the test more reliable. 2014-09-17 20:56:05 +02:00
Simone Bordet 3e602117b4 Improved send() implementation to be more clear, and covered also a
missing case where the callback may have not been notified.
2014-09-17 18:07:22 +02:00
Simone Bordet 5370f3c8cb 442950 - Embedded Jetty client requests to localhost hangs with high cpu usage (NIO OP_CONNECT Solaris/Sparc). 2014-09-01 12:06:18 +02:00
Simone Bordet 17c8f71724 Renamed onConnect() to onAccept() to reflect its server-side role. 2014-08-21 11:54:03 +02:00
Simone Bordet c07ea68b51 Improved configurability of stream idle timeout. 2014-08-21 11:54:03 +02:00
Simone Bordet 75c1322adc Rewritten close workflow to make sure that connections are correctly closed. 2014-08-21 11:54:03 +02:00
Simone Bordet 7a61c96ba1 Removed debug logging (wrongly assumes the ByteBuffer has a backing array). 2014-08-21 11:54:03 +02:00
Simone Bordet c10e5e8833 Renamed PushTest -> PushCacheFilterTest. 2014-08-21 11:54:02 +02:00
Simone Bordet c15480644f 442083 - Client resets stream, pending server data is failed, connection closed.
Introduced ResetException, and using it when failing frames of streams
that have been reset already.

HttpTransportOverHTTP2.abort(Throwable) checks for this exception and
does not close the connection.
2014-08-19 18:40:01 +02:00
Simone Bordet d4f140ff65 Ignoring HEADERS, PUSH_PROMISE and DATA if the stream cannot be found.
This typically happens when the stream has been reset.
2014-08-19 13:43:24 +02:00
Simone Bordet 20076fcdc5 Moved reset() from Session to Stream. 2014-08-19 13:41:52 +02:00
Simone Bordet 09d54eacab Accounting for the session flow control window in case of reset streams. 2014-08-19 13:38:43 +02:00
Simone Bordet 728a7c3442 Made push functionality honor configuration parameter sent via SETTINGS. 2014-08-15 18:34:20 +02:00
Simone Bordet c7987b154a Reverted logging of HTTP2 tests from DEBUG to INFO. 2014-08-15 17:29:38 +02:00
Greg Wilkins 1c71040eca moved config plugin to profile 2014-08-15 19:53:52 +10:00
Greg Wilkins b47f9ef605 cleaned up OSGi manifest creation 2014-08-15 19:35:49 +10:00
Simone Bordet 48b1f9f3f1 Implemented HTTP/2 push functionality.
A PushCacheFilter contains the logic to associate secondary resources
to primary resources.
PushCacheFilter calls a Jetty-specific API on the request dispatcher:
Dispatcher.push(ServletRequest). This is a technology preview of the
push functionality slated for Servlet 4.0.
The push() invocation arrives to the transport and it is converted to
HTTP/2 specific PUSH_PROMISE, along with the mechanism to simulate
the request for the secondary resource.
2014-08-14 23:05:35 +02:00
Greg Wilkins a14d843382 ignored osgi-spdy tests 2014-08-14 15:18:28 +10:00
Greg Wilkins 68a3ca8e31 improved debug logging of settings 2014-08-13 12:00:32 +10:00
Simone Bordet a97d4642ab Improved toString() methods for frames. 2014-08-12 23:01:03 +02:00
Simone Bordet 20963c9c61 Refactored host and port to local variables. 2014-08-12 18:54:50 +02:00
Simone Bordet 814c84a212 Introduced configuration properties for ALPN/NPN advertised protocols.
No more need to copy protonego-alpn.xml to a jetty.base to specify
which protocols are advertised and in which order.
Instead, simply specify:

alpn.protocols=h2-14,http/1.1
alpn.defaultProtocol=http/1.1

in start.ini (in the example above for http2).
2014-08-12 18:54:33 +02:00
Simone Bordet e147ce9528 Updated flow control implementation to detect when senders exceed
allowed windows.
2014-08-12 16:37:41 +02:00
Simone Bordet 4f4c3604a2 Made the test more reliable. 2014-08-12 16:27:33 +02:00
Simone Bordet d2fa4dca60 Introduced configuration properties for ALPN/NPN advertised protocols.
No more need to copy protonego-alpn.xml to a jetty.base to specify
which protocols are advertised.
Instead, simply specify:

protonego.protocols=h2-14,http/1.1
protonego.defaultProtocol=http/1.1

in start.ini (in the example above for http2).
2014-08-11 23:59:26 +02:00
Simone Bordet 107a4fff20 Fixed handling of INITIAL_WINDOW_SIZE setting.
It must update only stream windows, and not the session window.
2014-08-11 18:43:50 +02:00
Simone Bordet 187c42fa4a Closing the flusher instead of just disconnecting after a GO_AWAY.
This ensures that frames that may have been added to the flusher queue
concurrently after the GO_AWAY are properly failed and the queue
drained.
2014-08-11 11:30:49 +02:00
Simone Bordet 59a9c0890c Fixed off-by-one in counting the padding bytes. 2014-08-08 23:53:18 +02:00
Simone Bordet f8086dc7c2 Refactored the send of the SETTINGS frame from the client.
It's now sent after a call to onPreface(), which has been moved to
the common interface Session.Listener (from ServerSession.Listener),
so that client applications can customize the SETTINGS to send to the
server.
2014-08-08 23:52:20 +02:00
Simone Bordet ab96bf775f Removed unneeded casting to DataFrame. 2014-08-08 18:19:02 +02:00
Greg Wilkins 5da39140df remove old TODOs 2014-08-08 18:30:56 +10:00
Simone Bordet 6b9a069d9d Waiting for all the frames to arrive before stopping. 2014-08-08 01:11:59 +02:00
Simone Bordet 466d8db8d8 Sending a SETTINGS frame after the preface, as required by the spec. 2014-08-08 01:11:59 +02:00
Simone Bordet 69927b935e Don't send a window update if the length is zero. 2014-08-08 01:11:59 +02:00
Greg Wilkins 287e86b7aa decomposed https,http2 and spdy modules to share ServerConnector 2014-08-07 12:58:12 +10:00
Greg Wilkins 64e49a1fe5 work around classloaders for field preencoders 2014-08-07 09:10:35 +10:00
Simone Bordet 55dec378fc Merged branch 'jetty-http2' into 'http2_flow_control' 2014-08-06 15:43:56 +02:00
Simone Bordet abd139cc1b Reworked flow control implementation. Splitted HTTP2Flusher out of HTTP2Session.
Flow control window updates are now processed by the flusher, so that
it is the only component that handles window updates.
In the process of this refactoring, HTTP2Flusher was refactored out
of HTTP2Session.
2014-08-06 15:42:36 +02:00
Simone Bordet 2cd53831c0 Refactored onReadTimeout() to parent class. 2014-08-06 15:39:29 +02:00
Greg Wilkins 17f46665df preencoded httpfield optimisation 2014-08-06 21:09:26 +10:00
Greg Wilkins b5971484a5 Basic push mechanism skeleton 2014-08-06 10:50:55 +10:00
Simone Bordet 22cdca9131 Merge branch 'jetty-http2' into http2_flow_control 2014-08-05 10:01:30 +02:00
Greg Wilkins 6b3c8d06a9 partial 100 continues support in http2 2014-08-05 16:14:53 +10:00
Greg Wilkins d7f2c42e2d misc optimisation of http2 field creation 2014-08-05 12:55:37 +10:00
Simone Bordet 636c7eaeae Fixed handling of max concurrent streams.
There is a difference between the value set via configuration, that
always refer to remote streams (streams initiated by remote peers),
and the value received via SETTINGS frame, that always refer to local
streams (streams initiated locally).
2014-08-05 02:01:34 +02:00
Greg Wilkins 48d68a4916 handle http/1 host header in http/2 2014-08-05 09:21:27 +10:00
Simone Bordet ac7aa4decc Flow control needs improvements. 2014-08-05 00:28:06 +02:00
Simone Bordet 20925ded97 Fixed insertion of frame header buffer at the right index.
In case the lease is not empty, the frame header buffer must not be
inserted at index 0, but just before the frame body buffer.
2014-08-04 12:15:14 +02:00
Simone Bordet a2faa030cc Improved logging. 2014-08-04 12:09:35 +02:00
Simone Bordet 17c03385d6 Fixed send() by properly handling all cases. 2014-08-04 12:09:10 +02:00
Simone Bordet 35f0103add Added HTTP2 tests for multiple requests. 2014-08-03 00:27:28 +02:00
Simone Bordet 8d554b54a8 Fixed checks for headers too big. 2014-08-03 00:27:28 +02:00
Simone Bordet e332aa9c43 Improved logging. 2014-08-03 00:27:28 +02:00
Greg Wilkins 1fb07644a1 Use HttpHeader enum for :path and similar h2 fields 2014-08-02 16:37:43 +10:00
Greg Wilkins cd59d0085e improve known header handling in hpack encoding 2014-08-02 15:40:15 +10:00
Greg Wilkins 1873b306b3 Improved hpack encoder handling of custom fields 2014-08-02 12:56:12 +10:00
Simone Bordet dcc8bfcd10 Fixed a reentrancy issue that caused a stack overflow.
The case was that shutdown was called, ShutdownFlusherEntry called
flusher.close(), which called super.close(), which called
onCompleteFailure(), which looped over the active items to fail them,
calling again ShutdownFlusherEntry, which called again flusher.close(),
etc.
2014-08-02 00:38:24 +02:00
Simone Bordet 87c4c5efd3 Updated to point to webtide.com, now HTTP/2 enabled. 2014-08-02 00:02:25 +02:00
Simone Bordet 51e4885911 Made HTTP2Client support SSL so that it can be used to test websites that serve HTTP2. 2014-08-01 19:03:29 +02:00
Simone Bordet 7004d71996 Reporting FRAME_SIZE_ERROR in case wrong frame lengths. 2014-08-01 16:22:36 +02:00
Simone Bordet cddfa033f0 Implemented handling of SETTINGS_HEADER_TABLE_SIZE configuration property. 2014-08-01 16:20:20 +02:00
Simone Bordet 346b726c47 Taking into account the padding bytes in flow control length. 2014-08-01 15:54:12 +02:00
Simone Bordet 89a045855c Moved http2.frames.Flag to http2.Flags. 2014-08-01 15:04:14 +02:00
Simone Bordet 67fd213263 Moved http2.parser.ErrorCode to http2.ErrorCodes. 2014-08-01 15:03:49 +02:00
Simone Bordet 168a8f7dbf Reporting FRAME_SIZE_ERROR in case wrong frame lengths. 2014-08-01 15:01:03 +02:00
Simone Bordet 3283232f02 Added initial support for parsing CONTINUATION frames, and nothing more. 2014-08-01 14:02:11 +02:00
Simone Bordet 6b6267ed31 Updated implementation to draft-14. 2014-08-01 13:32:56 +02:00
Greg Wilkins 9c3eedfea8 Updates to hpack for hpack-09 draft 2014-07-31 13:26:23 +10:00
Greg Wilkins a14b2be0e6 Merge branch 'jetty-http2' into refset 2014-07-31 11:58:30 +10:00
Greg Wilkins 70dafa8eb3 simplified HttpTransport API 2014-07-31 11:53:51 +10:00
Greg Wilkins 5d8780cb4e Record some TODOs 2014-07-28 15:27:40 +10:00
Greg Wilkins a1696c0139 updates for hpack huffman and examples 2014-07-25 19:38:16 +10:00
Greg Wilkins c13be6d932 Merge branch 'jetty-http2' into refset
Conflicts:
	jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackEncoderTest.java
2014-07-25 18:33:10 +10:00
Greg Wilkins 30123607c6 Major refactor of metadata and HttpURI
This refactor strives to remove duplication between the Metadata class and the HttpURI class.

Both classes have been made mutable (as they partially were anyway so best not to pretend).

HttpURI now holds the decomposed strings rather than a single string with indexes. This allows it to be rebuilt after changing just parts of the URI. It is now a lot more similar to the
JVM URI class and we could consider replacing it (after checking peformance).

Next step is to refactor the Request class to prevent it duplicating these fields.
2014-07-24 15:49:52 +10:00
Greg Wilkins d6f841bb87 fixed refactor uri issue 2014-07-23 09:03:52 +10:00
Greg Wilkins 7f62f2600b refactored URI handling 2014-07-20 10:23:47 +10:00
Greg Wilkins a639359a7b do not index content-length 2014-07-18 17:23:44 +10:00