Commit Graph

1906 Commits

Author SHA1 Message Date
Joakim Erdfelt 43d95cd984 Updating to version 9.3.29-SNAPSHOT 2019-11-05 13:02:10 -06:00
Joakim Erdfelt d7dd68d6e9 Updating to version 9.3.28.v20191105 2019-11-05 11:46:40 -06:00
Joakim Erdfelt b17439c731 Updating to version 9.2.30-SNAPSHOT 2019-11-05 11:23:21 -06:00
Joakim Erdfelt 36c95fdd43 Updating to version 9.2.29.v20191105 2019-11-05 10:43:15 -06:00
Joakim Erdfelt a3f3612fb4
Issue #4217 - Reverting debug output in IllegalStateException
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-10-30 17:23:08 -05:00
Joakim Erdfelt f7ab02a5d1
Issue #4217 - Fixing OVERFLOW case to allow flush()
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-10-30 17:21:59 -05:00
Joakim Erdfelt c04997f7e0
Issue #4217 - SslConnection DecryptedEndpoint flush eternal busy loop
+ Flush on BUFFER_OVERFLOW

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-10-30 17:05:46 -05:00
Joakim Erdfelt 737144a35e
Issue #4217 - Allowing Large TLS Records in Java 11+ in Jetty 9.2.x
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-10-30 15:29:20 -05:00
Joakim Erdfelt e137ee3cd7
Issue #4217 - SslConnection DecryptedEndpoint flush eternal busy loop
+ Cleanup from review

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-10-30 14:03:16 -05:00
Joakim Erdfelt c58fd58e41
Testing Large TLS Records for Jetty 9.2.x
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-10-29 19:14:07 -05:00
Joakim Erdfelt 93a5ff0b89
Issue #4217 - SslConnection DecryptedEndpoint flush eternal busy loop
+ Small cleanup of duplicate if statements

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-10-25 16:41:26 -05:00
Joakim Erdfelt e665c8f806
Issue #4217 - SslConnection DecryptedEndpoint flush eternal busy loop
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-10-24 16:26:43 -05:00
Joakim Erdfelt 1ed13b6b30 Updating to version 9.4.23-SNAPSHOT 2019-10-22 09:19:41 -05:00
Joakim Erdfelt b1e6b55512 Updating to version 9.4.22.v20191022 2019-10-22 08:20:50 -05:00
Simone Bordet 73eb82c20f Issue #4217 - SslConnection.DecryptedEndpoint.flush eternal busy loop.
Updates after review.
Added test case.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-10-19 20:06:10 +02:00
Simone Bordet 991cf20cce Issue #4217 - SslConnection.DecryptedEndpoint.flush eternal busy loop.
Releasing the decrypted input buffer so that it can be re-acquired
with an expanded capacity.
Looping around only if the buffer size has changed.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-10-19 12:27:58 +02:00
Simone Bordet 2e633a4e86 Fixes #4217 - SslConnection.DecryptedEnpoint.flush eternal busy loop.
Releasing the encrypted output buffer so that it can be re-acquired
with an expanded capacity.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-10-17 19:41:52 +02:00
Simone Bordet 20e0453da8 Merged branch 'jetty-9.4.x' into 'jetty-9.4.x-4201-httpclient_throw_sslhandshakeexception'. 2019-10-16 18:51:15 +02:00
Simone Bordet 1e360244a5 Fixes #4209 - Unused TLS connection is not closed in Java 11.
Added workarounds for the Java 11 behavior.

In fill(), call closeInbound() if we filled -1 and the handshake
did not start yet. This avoids to send a ClientHello to the peer
even if we are closing.

In flush(), if the handshake status is NEED_UNWRAP but we are
closing, force a wrap().

Added test cases.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-10-16 13:10:40 +02:00
Simone Bordet 4769de8a2b Issue #4209 - Unused TLS connection is not closed in Java 11.
Code cleanup.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-10-16 13:02:24 +02:00
Simone Bordet 3ce87f717c Fixes #4201 - Throw SSLHandshakeException in case of TLS handshake failures.
Now rethrowing other exceptions as SSLHandshakeException
if they happen during the TLS handshake.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-10-15 16:44:30 +02:00
Simone Bordet cd57af4caf
Merge pull request #4116 from eclipse/jetty-9.4.x-4115-drop_http2_pseudo_headers
Fixes #4115 - Drop HTTP/2 pseudo headers.
2019-10-10 12:15:58 +02:00
Simone Bordet 3be178c966 Merged 'jetty-9.4.x' into 'jetty-9.4.x-2429-httpclient_backpressure'. 2019-10-03 13:17:39 +02:00
Simone Bordet 609c144ae0 Fixes #4115 - Drop HTTP/2 pseudo headers.
Invalid HTTP/2 headers are now causing an error rather than being ignored.

HTTP2Flusher now catches HpackException.StreamException and generates a
RST_STREAM frame, rather than just closing the connection.

Modified HpackEncoder to throw HpackException in case of encoding failure.
Introduced HpackEncoder.validateEncoding (defaults true) so validation of
the headers can be disabled (useful for tests).

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-10-03 12:45:55 +02:00
Joakim Erdfelt 6fc42d8ba2 Merge branch 'release-9.4.21' into jetty-9.4.x 2019-10-01 13:35:43 -05:00
Simone Bordet a85a18e0d8 Fixes #3787 - Jetty client throws EOFException instead of SSLHandshakeException on certificate errors.
Fixed indent.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-09-30 08:53:12 +02:00
Simone Bordet ad2770ddc2 Fixes #3787 - Jetty client throws EOFException instead of SSLHandshakeException on certificate errors.
Updates after review.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-09-27 00:15:34 +02:00
Simone Bordet 2c75e876a3 Fixes #3787 - Jetty client throws EOFException instead of SSLHandshakeException on certificate errors.
Now exceptions thrown by fill() or flush() are stored in a field.
Further fill() operations will rethrow the original exception rather
than returning -1.

Returning -1 to application was causing them to close() with a generic
failure that was triggering the EOFException reported in this issue.

Now applications see the original exception and can close() with the
proper cause.

Re-enabled HostnameVerificationTest that was reproducing this issue
reliably but was @Disabled a while back and never re-enabled.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-09-26 18:30:43 +02:00
Simone Bordet d12df30df7 Issue #3787 - Jetty client throws EOFException instead of SSLHandshakeException on certificate errors.
Code cleanups.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-09-26 18:18:13 +02:00
Joakim Erdfelt 7807eafad9 Updating to version 9.4.22-SNAPSHOT 2019-09-26 10:46:28 -05:00
Joakim Erdfelt 72970db61a Updating to version 9.4.21.v20190926 2019-09-26 09:59:15 -05:00
Simone Bordet b3be28086b Fixes #4113 - HttpClient fails with JDK 13 and TLS 1.3.
1. Now forwarding the fillable event rather than assuming that is due
to garbage bytes or by a server close. This ensures that a HTTP read
consumes the TLS bytes and the `NewSessionTicket` message.
2. Avoid to set the `SslConnection` onto the `EndPoint` in
`SslClientConnectionFactory` - this allows upgrades to work properly,
for example when tunnelling through a secure proxy.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-09-23 17:59:37 +02:00
Simone Bordet d39f19cc23 Issue #2429 - Review HttpClient backpressure semantic.
Introduced a Response.DemandedContentListener to explicitly separate
the will to request more content from the notification that the content
has been consumed.

Updated all transports to follow the new semantic: rather than waiting
for the callback to complete before delivering more content, now they
wait for the demand to be positive to deliver more content.

Since now the content may be unconsumed but there can be more demand,
all transport implementation had to be changed to use RetainableByteBuffer
to retain content buffers that were not consumed.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-09-19 17:19:25 +02:00
Joakim Erdfelt 68382b9549 Issue #3989 - Cleaning up ManagedSelector.onSelectFailed
+ Based on PR review

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-09-10 03:46:26 -05:00
Joakim Erdfelt b7b744160f Issue #3989 - Tests for both Restart Server and Selector
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-09-06 16:10:30 -05:00
Joakim Erdfelt f8041b23bd Issue #3989 - Cleaning up ManagedSelector.doStop() for dead selector
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-09-06 14:54:01 -05:00
Joakim Erdfelt 0fd989f0cd Issue #3989 - Restoring _selector to null on failure
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-09-06 08:24:51 -05:00
Joakim Erdfelt d8efb62d13 Issue #3989 - Select Failure does not attempt to restart selector
+ Changes from PR review

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-09-05 12:12:49 -05:00
Joakim Erdfelt 9305914d6a Issue #3989 - Selector failure notification
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-09-04 11:16:24 -05:00
Joakim Erdfelt f6efff70d7 Issue #3989 - Selector failure notification
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-08-30 13:47:16 -05:00
Greg Wilkins bde86467f4
Issue #3806 - Make Async sendError fully Async (#3912)
* Issue #3806 async sendError

Avoid using isHandled as a test withing sendError as this can be
called asynchronously and is in a race with the normal dispatch of the
request, which could also be setting handled status.

The ErrorHandler was dispatching directly to a context from within
sendError.  This meant that an async thread can call sendError and be
dispatched to within the servlet container at the same time that the
original thread was still dispatched to the container.

This commit fixes that problem by using an async dispatch for error
pages within the ErrorHandler.  However, this introduces a new problem
that a well behaved async app will call complete after calling
sendError.  Thus we have ignore complete ISEs for the remainder of
the current async cycle.

Fixed the closing of the output after calling sendError. Do not
close if the request was async (and thus might be dispatched to an
async error) or if it is now async because the error page itself is
async.

* updates from review
* better tests
* revert ignore complete
* added some TODOs
* more TODOs
* fixed rename
* cleanup ISE and more TODOs
* refactored to call sendError for uncaught exceptions rather than onError
* more of the refactor
* extra tests for sendError from completing state

Reworked HttpChannelState and sendError so that sendError is now
just a change of state. All the work is done in the ErrorDispatch
action, including calling the ErrorHandler.  Async not yet working.

Additional tests

Converted ERRORED state to a separate boolean so it can be used for
both Sync and Async dispatches.

Removed ASYNC_IO state as it was just the same as DISPATCHED

The async onError listener handling is now most likely broken.


WIP making sendError simpler and more tests pass
WIP handling async and thrown exceptions
WIP passing tests

Improved thread handling

removed bad test

Implemented error dispatch on complete properly
more fixed tests

sendError state looks committed

- Added resetContent method to leave more non-content headers during sendError
- Fixed security tests
- simplified the non dispatch error page writing.  Moved towards being able to write async

* fixed gzipHandlerTest

* Updated handling of timeout errors.  According to servlet spec,
exceptions thrown from onTimeout should not be passed to onError, but
just logged and ignored:

   If an exception is thrown while invoking methods in an AsyncListener,
   it is logged and will not affect the invocation of any other AsyncListeners.

* This changes several tests.

* Dispatcher/ContextHandler changes for new ERROR dispatch handling. Feels a bit fragile!

* Fixed tests in jetty-servlets
* Fixed tests in jetty-proxy

* more test fixes

* Fixed head handling
reverted unnecessary changes
Improved reason handling

WIP on fully async error handling.
Simplified HttpChannelState state machines to allow for async actions
during completing

more WIP on fully async error handling.

sendError and completion are not both non-blocking, without using
a startAsync operation. However we are lacking unit tests that actually
exercise those code paths.

* Simplified name of states
Added test for async completion
* Cleanups and javadoc
* Cleanups and javadoc
* remove snake case
* feedback from review
* Write error page into fixed pooled buffer

Use the response to get/release a pooled buffer into which the error
page can be written.  Make it a fixed sized buffer and if it overflows
then no error page is generated (first overflow turns off showstacks
to save space).

The ErrorHandler badly needs to be refactored, but we cannot change
API in jetty-9

* More test fixes for different error page format
* minor cleanups
* Cleanup from Review
* Fixed javadoc
* cleanups and simplifications
* Cleanup from Review
* renaming and some TODOs
* Cleanup from Review
* Checkstyle fixes
* Cleanup from Review
* Code cleanups and simplifications
* fixed debug
* Cleanup from Review
* Ensure response sent before server shutdown
* removed unnecessary optimisation
* fixed duplicate from merge
* Updates from review

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-08-26 17:55:58 +10:00
Olivier Lamy fe3d3f7158
fix checkstyle in test sources (#4013)
Signed-off-by: olivier lamy <oliver.lamy@gmail.com>
2019-08-22 19:56:41 +10:00
Joakim Erdfelt 669253bf6d Fixes #3989 - Using IO.close(Closable) instead
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-08-20 10:03:29 -05:00
Joakim Erdfelt d4c9b017e9 Fixes #3989 - Selector restart with custom ManagedSelector
+ applying changed from PR review

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-08-20 09:36:35 -05:00
Joakim Erdfelt de9677c8af Fixes #3989 - Selector restart with custom ManagedSelector
+ Adds onSelectFailed(Throwable)
+ Adds startSelector()
+ Unit test to demonstrate behavior on both execution
  strategies

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-08-19 15:50:35 -05:00
Joakim Erdfelt f1efc99918 Updating to version 9.4.21-SNAPSHOT 2019-08-13 17:34:20 -05:00
Joakim Erdfelt 84700530e6 Updating to version 9.4.20.v20190813 2019-08-13 16:13:21 -05:00
Simone Bordet 264ceb143d Fixes #3601 - HTTP2 stall on reset streams.
After review, introduced WriteFlusher.isPending() and now using that
in the test case to test for TCP congestion.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-08-07 11:48:31 +02:00
Simone Bordet 873d1c6d7d Fixes #3601 - HTTP2 stall on reset streams.
The client reset wakes up threads blocked in
writes, but these may again attempt to write,
therefore blocking again.

Now we detect that the stream is not writable
and mark the transport as failed, so that
writes fail immediately without blocking.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-07-25 22:21:13 +02:00
Greg Wilkins 9706d70484
Jetty 9.4.x reformat (#3811)
* Removing Legacy Method Separators
* Restyling branch `jetty-9.4.x`
* Applying changes highlighted by checkstyle
* Applying XML restyling
* Fixing XML codestyle for IntelliJ
* Fixing XML style mistakes
* Revert "Applying XML restyling"
* Updating checkstyle for XML codestyle
* Reformatting pom.xml files
* Fixed empty string from line wraps
* Update intellij style to not do expression relative formatting. Reformatted code based on that.
* Increasing line split on Eclipse IDE Formatter to 512
* Restoring setting on internal default value.
+ IntelliJ will not export settings on things that set to their
  internal default values.
  We want to keep those values as a hedge against future default
  value changes in future releases of IntelliJ.
* Fixing intellij codestyle
* do not allow single line simple methods
* misc checkstyle fixes
* re-exported with correct name and all values

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-06-24 17:40:30 +02:00
Joakim Erdfelt 40e9e053b9
Merge pull request #3768 from eclipse/jetty-9.4.x-3708-stringutil-replace
Issue #3708 - use StringUtil alternatives for known slow JVM impls.
2019-06-13 14:01:35 -05:00
Lachlan c94753ece3
Issue #3746 - fix WriteFlusher ClassCastException if Callback throws (#3778)
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-06-13 15:51:22 +10:00
Joakim Erdfelt 877815e195 Issue #3708 - Adding new methods and converting codebase to use them
+ StringUtil.replace(String, char, char)
+ StringUtil.strip(String, String)
+ URIUtil.encodeSpecific(String, String)
+ URIUtil.decodeSpecific(String, String)
+ TypeUtil.toClassReference(Class)
+ TypeUtil.toClassReference(String)

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-06-12 09:56:41 -05:00
Joakim Erdfelt ae21126cad Updating to version 9.4.20-SNAPSHOT 2019-06-10 13:40:17 -05:00
Joakim Erdfelt afcf563148 Updating to version 9.4.19.v20190610 2019-06-10 11:17:56 -05:00
Joakim Erdfelt c33f3a75ed Merge branch `release-9.4.18` into `jetty-9.4.x` 2019-04-30 11:44:06 -05:00
Simone Bordet de9cc312a4 Fixes #3534 - Don't use System.currentTimeMillis() in IdleTimeout.
Removed usages of System.currentTimeMillis() and cleaned up the code.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-04-30 15:24:24 +04:00
Joakim Erdfelt 734be56938 Updating to version 9.4.19-SNAPSHOT 2019-04-29 16:27:23 -05:00
Joakim Erdfelt e1bc35120a Updating to version 9.4.18.v20190429 2019-04-29 15:40:33 -05:00
Joakim Erdfelt 05bb111580 Updating to version 9.4.18-SNAPSHOT 2019-04-18 15:59:49 -05:00
Joakim Erdfelt aa1c656c31 Updating to version 9.4.17.v20190418 2019-04-18 14:44:28 -05:00
Joakim Erdfelt 5882d63ba7 Updating to version 9.3.28-SNAPSHOT 2019-04-18 13:54:17 -05:00
Joakim Erdfelt d3e249f869 Updating to version 9.3.27.v20190418 2019-04-18 13:10:03 -05:00
Joakim Erdfelt 2c14d93885 Updating to version 9.2.29-SNAPSHOT 2019-04-18 12:17:07 -05:00
Joakim Erdfelt 1dffa36fe3 Updating to version 9.2.28.v20190418 2019-04-18 11:23:17 -05:00
Joakim Erdfelt 79537a5f51 Updating to version 9.4.17-SNAPSHOT 2019-04-11 11:00:24 -05:00
Joakim Erdfelt e0aa4ae4c0 Updating to version 9.4.16.v20190411 2019-04-11 10:01:26 -05:00
Simone Bordet a15154c290 Issue #3481 - TLS close_notify() is not guaranteed.
Making sure that if a wrap() requires multiple passes,
they are done before returning.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-04-05 17:20:43 +11:00
Greg Wilkins 36df72d455 Issue #3481 TLS Close
Updates from review:
 - revert outputShutdown logic

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-04-05 17:20:43 +11:00
Greg Wilkins db60003099 Issue #3481 TLS Close
Updates from review:
 - cleanup isEmpty logic

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-04-05 17:20:43 +11:00
Greg Wilkins 8a13085493 Issue #3481 TLS Close
Updates from review:
 - fixed flush return for NEED_UNWRAP

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-04-05 17:20:43 +11:00
Greg Wilkins 33e3894796 Issue #3481 TLS Close
Updates from review:
 - shutdown after flush
 - close if write fails

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-04-05 17:20:43 +11:00
Greg Wilkins b7bae5c683 Issue #3481 cleanups
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-04-05 17:20:43 +11:00
Greg Wilkins e109116806 Issue #3481 Blocked TLS close
Added test harness
removed retry loop in favour of single retry then write

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-04-05 17:20:43 +11:00
Greg Wilkins d96d6178de Issue #3481
async write of close handshake

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-04-05 17:20:43 +11:00
Greg Wilkins dc7d0b70e3 Issue #3481 provisional work around
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-04-05 17:20:43 +11:00
Simone Bordet b6b7d2e730 Issue #3133 - Logging of key.readyOps() can throw unchecked CancelledKeyException.
Changed logging to level IGNORE, since it's too verbose when debugging.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-04-04 12:18:16 +02:00
Joakim Erdfelt 9b19374c5d Updating to version 9.2.28-SNAPSHOT 2019-04-03 19:38:05 -05:00
Joakim Erdfelt 84dfe74b97 Updating to version 9.2.27.v20190403 2019-04-03 19:04:45 -05:00
Joakim Erdfelt c70034766e Updating to version 9.3.27-SNAPSHOT 2019-04-03 18:46:31 -05:00
Joakim Erdfelt dae476e369 Updating to version 9.3.26.v20190403 2019-04-03 18:16:32 -05:00
Joakim Erdfelt 2ccde9772b Undoing bad release-9.3.26 2019-04-03 18:11:16 -05:00
Greg Wilkins 9f4b3542cb Updating to version 9.3.27-SNAPSHOT 2019-04-03 17:32:08 +11:00
Greg Wilkins 7ec6d2fb32 Updating to version 9.3.26.v20190403 2019-04-03 13:06:51 +11:00
Simone Bordet 6fb243ff6c Issue #3464 - Split SslContextFactory into Client and Server
Introduced SslContextFactory subclasses Client and Server.
Replaced all usages of SslContextFactory with either Client or Server
as required.

Refactored configuration checking so that warnings are not emitted
when non necessary.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-03-21 14:42:42 +01:00
Simone Bordet d2e13ec5ad Code cleanup and improved toString() and javadocs.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-03-07 12:27:43 +01:00
Simone Bordet de0c8e3531 Issue #1861 - Limit total bytes pooled by ByteBufferPools.
Small improvement after review.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-02-28 12:41:11 +01:00
Simone Bordet 676b7ecaba Issue #1861 - Limit total bytes pooled by ByteBufferPools.
Added a bytebufferpool module to be able to configure
the ByteBufferPool used by ServerConnectors.

Added JMX methods to the ByteBufferPool implementations.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-02-27 17:16:09 +01:00
Simone Bordet 16933f8df2 Issue #1861 - Limit total bytes pooled by ByteBufferPools.
Updated the implementation to track the oldest bucket and
release its buffers when the retained memory is exceeded.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-02-27 12:54:06 +01:00
Simone Bordet ced0361cab Issue #1861 - Limit total bytes pooled by ByteBufferPools.
Fixed the implementation to correctly track the memory retained.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-02-26 11:50:11 +01:00
Simone Bordet 7323b19f6f Issue #1861 - Limit total bytes pooled by ByteBufferPools.
Implemented a limit for the total memory retained by the
ByteBufferPool for both direct and heap buffers.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-02-26 10:56:30 +01:00
Simone Bordet f2d15f12d5 Issue #1861 - Limit total bytes pooled by ByteBufferPools.
Code cleanups + javadocs.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-02-25 16:14:41 +01:00
Joakim Erdfelt 9cdb59d4d7 Updating to version 9.4.16-SNAPSHOT 2019-02-15 13:35:15 -05:00
Joakim Erdfelt eb70b24016 Updating to version 9.4.15.v20190215 2019-02-15 11:53:00 -05:00
Simone Bordet 8964608bfc Fixes #3154 - Add support for javax.net.ssl.HostnameVerifier to HttpClient.
Added a SslHandshakeListener to SslConnection that performs
the host name verification (only on the client) if the
HostnameVerifier has been configured in SslContextFactory.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-02-05 15:48:17 +01:00
Simone Bordet d22ec03acc
Merge pull request #3287 from eclipse/jetty-9.4.x-3049-sslcontextfactory_warnings
Issue #3049 - Warn on common SslContextFactory problematic configurations
2019-02-04 22:56:32 +01:00
Simone Bordet fda815cd56
Merge pull request #3306 from eclipse/jetty-9.4.x-3305-avoid_select_now
Fixes #3305 - Avoid additional selectNow().
2019-02-04 11:44:13 +01:00
Simone Bordet 5061a5ca30 Fixes #3311 - Ability to serve HTTP and HTTPS from the same port.
Fixed handling of upgradeTo() in case of null buffers.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-01-31 17:15:07 +01:00
Simone Bordet 88408375ab Issue #3049 - Warn on common SslContextFactory problematic configurations.
Updating SslContextFactory configuration for tests, since
the change in the default endPointIdentificationAlgorithm
makes the test failing as the certificates are not valid
for the local host, which is different depending on where
the tests are run (locally, jenkins).

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-01-31 15:31:35 +01:00
Simone Bordet ccda1ee5f6 Fixes #3311 - Ability to serve HTTP and HTTPS from the same port.
Introduced PlainOrSslConnectionFactory, to "sniff" the first bytes
on a connection and upgrade to SSL (if the bytes are TLS bytes), or
upgrade to a specific, configured, protocol.

Added also the ability to fail the upgrade in case of a `http`
request to a `https` port and write a minimal response to the client.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-01-31 13:23:58 +01:00
Simone Bordet d02762140d Fixes #3305 - Avoid additional selectNow().
Using system property "org.eclipse.jetty.io.forceSelectNow"
to force a selectNow() call; if absent, forcing selectNow()
only in the Windows OS.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-01-30 19:41:35 +01:00
Olivier Lamy 9b7afd8a03
Happy new year!! (#3232)
Signed-off-by: olivier lamy <oliver.lamy@gmail.com>
2019-01-01 11:52:16 +10:00
Greg Wilkins 89e1dd033a
Jetty 9.4.x 3117 retainable byte buffer (#3118)
* Move RetainableByteBuffer to jetty-io=
use RetainableByteBuffer
use RetainableByteBuffer - changes from review.
Reviewed and applied small changes.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-11-22 11:31:05 +01:00
Simone Bordet 910665a55a Fixes #3133 - Logging of key.readyOps() can throw unchecked CancelledKeyException.
Introduced safeInterestOps() and safeReadyOps() to catch exceptions
they may throw and using them in relevant places to fix the issue.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-11-21 17:37:37 +01:00
Greg Wilkins 8c4ee8496f
Jetty 9.4.x 3038 ssl connection leak (#3121)
Issue #3038 - SSL connection leak.

Fixed SSL spin caused when fill had NEED_WRAP, but a flush/wrap
produced 0 bytes and stayed in NEED_WRAP

Removed check of isInputShutdown prior to filling that allowed EOF to
overtake data already read.

Fix for leak by shutting down output in HttpConnection if
filled -1 and the HttpChannelState was no longer processing
current request.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-11-20 13:53:42 +01:00
Joakim Erdfelt 29fd18e046 Updating to version 9.4.15-SNAPSHOT 2018-11-14 16:42:40 -06:00
Joakim Erdfelt c4550056e7 Updating to version 9.4.14.v20181114 2018-11-14 15:19:10 -06:00
Joakim Erdfelt a903017f5f Updating to version 9.4.14-SNAPSHOT 2018-11-11 21:06:50 -06:00
Joakim Erdfelt 49123a3313 Updating to version 9.4.13.v20181111 2018-11-11 20:02:42 -06:00
Simone Bordet f814354bb5 Issue #3085 - Restore Dump methods for backwards compatibility reasons.
Restored removed methods to maintain backwards compatibility.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-11-09 17:47:46 +01:00
Greg Wilkins d455ac6aca Issue #3060 WriteFlusher fails callback on all Throwables
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-11-06 09:29:43 +01:00
Greg Wilkins 4a9265d4b4 backports from 10.0.x websocket refactor
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-11-03 17:53:32 +01:00
Greg Wilkins 15e1c73f9c
Cleanup the dump implementation (#2998)
* Cleanup the dump implementation
* improved the clarity of utility methods for dump and updated most dump methods
* fixed upgrade filter dump
* Improved dump after review
* Moved dumpObjects to Dumpable
* implemented dumpBeans with dumpObjects
* less verbose dump
* Dump streams
* fixed dump test

Signed-off-by: Greg Wilkins <gregw@webtide.com>
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-10-22 11:53:59 +11:00
Greg Wilkins 319766a70c Merge remote-tracking branch 'origin/jetty-9.3.x' into jetty-9.4.x 2018-10-05 18:56:49 +10:00
Greg Wilkins 166eeaa1f6
Jetty 9.3.x #2954 report cause (#2959)
Issue #2954 Report badmessage cause

Pass BadMessageException from parser to HttpReceiverOVerHTTP

This change has already mostly been made in 9.4, so essentially this is a back port.  However the
primary signature of HttpParser.Handler for badMessage has not been changed and a default method
used to handle the cause. This avoids breaking any usages of the interface.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-10-05 18:36:35 +10:00
Joakim Erdfelt a3f1592c50 Issue #2431 - Upgrade to Junit 5 (#2436)
+ Changes needed for new Junit 5
+ Migrating from Vintage junit API to Jupiter junit API
+ Relies on SNAPSHOT jetty-test-helper
  - this will be a formal release once this issue has been
    resolved satisfactory
+ Have jenkins always pull latest SNAPSHOT for each build
+ Adding jetty.snapshots repository
+ Using surefire 2.22.0 per advice from junit
+ Ensuring <reuseForks>true</reuseForks> to work around issue junit-team/junit5#801
+ Disabling <forkMode>always</forkMode> in maven-surefire-plugin
  due to bug https://github.com/junit-team/junit5/issues/801
+ OSGi tests must remain at vintage due to PaxExam
+ Moving from vintage TestingDir to jupiter WorkDir
+ Fixing imports to use jupiter, not vintage
+ Migrating vintage ExpectedException to jupiter assertThrows
+ Migrating vintage TestName to jupiter TestInfo
+ Migrating @RunWith(Parameterized.class)
  to @ParameterizedTest with Argument Sources
+ Migrating assertTrue(val.contains(needle))
  to assertThat(val, containsString(needle))
+ Aligning junit versions per recommendations from @sormuras
+ Adjusting parameter order change for assertEquals()
+ Test LifeCycle Annotation Migration

junit 4      | junit 5 / jupiter
------------ | -----------
@Before      | @BeforeEach
@After       | @AfterEach
@BeforeClass | @BeforeAll
@AfterClass  | @AfterAll

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: olivier lamy <oliver.lamy@gmail.com>
2018-09-05 10:07:17 +10:00
Jesse McConnell 863a19bccf
Updating to version 9.3.26-SNAPSHOT 2018-09-04 17:23:31 -05:00
Jesse McConnell 3ce520221d
Updating to version 9.3.25.v20180904 2018-09-04 16:08:21 -05:00
Jesse McConnell dcf6a8fa9f
Updating to version 9.4.13-SNAPSHOT 2018-08-30 10:48:22 -05:00
Jesse McConnell 2720868475
Updating to version 9.4.12.v20180830 2018-08-30 08:56:44 -05:00
Simone Bordet 7cf027b98f Jetty 9.4.x 2711 tls 13 compliance (#2857)
Issue #2711 - TLS 1.3 compliance.

Disabled few tests that are TLS 1.2 specific.
Renegotiation in SslConnection is now skipped for TLS 1.3.
Replaced SNI keystore DSA certificate with RSA certificate.
First full build achieved with JDK 11+28.
Small changes after review.
Modified the test case to pass in JDK 8, where the implementation
throws SSLException, while in later JDKs throws SSLHandshakeException.
Minor cleanup

Signed-off-by: Greg Wilkins <gregw@webtide.com>
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-08-28 21:43:45 +10:00
Simone Bordet c5aa15bdd4 Merged branch 'jetty-9.4.x-2836-ssl_cannot_reuse_connection' into 'jetty-9.4.x'. 2018-08-22 16:17:28 +02:00
Simone Bordet 1a7eac5966 Fixes #2847 - Wrap Connection.Listener invocations in try/catch.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-08-22 16:11:20 +02:00
Greg Wilkins 0e2daba7a2 minor cleanup
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-08-22 18:08:33 +10:00
Greg Wilkins 38735f8457 ensure fill is always called if needed by flush
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-08-21 12:02:52 +10:00
Simone Bordet bc78778f02 Issue #2836 - Sequential HTTPS requests may not reuse the same connection.
WIP.
Tentative fix to avoid that onFillable() is called after the exchange
is completed.
Now DecryptedEndPoint.fillInterest.fillable() is called before other
methods that may advance the exchange processing.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-08-20 23:01:43 +02:00
Simone Bordet ddd80deeb9 Improved logging and exception handling.
Now IllegalStateExceptions are thrown with a message.
Methods needsFillInterest() and onIncompleteFlush() are now wrapped in
try/catch to make sure the connection is closed in case of exceptions.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-08-17 15:39:47 +02:00
Simone Bordet 13792a65d2 Improved logging after unwrap().
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-08-16 20:49:07 +02:00
Kazuhiro Sera 96218e8bc4 Fix typos detected by github.com/client9/misspell
Signed-off-by: Kazuhiro Sera <seratch@gmail.com>
2018-08-10 23:52:16 +09:00
Joakim Erdfelt 516d93c488 Updating to version 9.2.27-SNAPSHOT 2018-08-06 11:33:22 -05:00
Joakim Erdfelt 8c637489ae Updating to version 9.2.26.v20180806 2018-08-06 10:51:25 -05:00
Joakim Erdfelt 9e97c50d90 Merge branch 'release-9.2.25' into jetty-9.2.x 2018-08-06 10:27:39 -05:00
Simone Bordet 8eb11a56c8 Merged branch 'jetty-9.3.x' into 'jetty-9.4.x'. 2018-08-06 15:00:16 +02:00
Simone Bordet 289dc935f1 Merged branch 'jetty-9.2.x' into 'jetty-9.3.x'. 2018-08-06 12:55:09 +02:00
Simone Bordet da9c5fcae2 Fixes #2777 - Workaround for Conscrypt's ssl == null.
Isolated SSLEngine method calls and wrapped them into try/catch
blocks to ignore the NullPointerException thrown by Conscrypt.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-08-06 12:41:44 +02:00
Simone Bordet b561ee2734 Issue #2755 - ManagedSelector 100% CPU spin.
Now checking for thread interrupted only when select() reports 0 selected.
This will avoid the check in case of legit I/O wakeups.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-08-02 13:13:54 +02:00
Simone Bordet 0a336230ef Issue #2755 - ManagedSelector 100% CPU spin.
Avoid race between doStart() and doStop() by waiting in doStart()
for _started=true.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-08-01 17:25:46 +02:00
Simone Bordet a090741a60 Issue #2755 - ManagedSelector 100% CPU spin.
Added check for thread interrupted.
If interrupted and ManagedSelector is not running, bail out.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-08-01 16:57:08 +02:00
Simone Bordet eceaff7bed Merged branch 'jetty-9.3.x' into 'jetty-9.4.x'. 2018-07-18 16:21:00 +02:00
Simone Bordet 37e4da24cb Merged branch 'jetty-9.2.x' into 'jetty-9.3.x'. 2018-07-18 16:15:27 +02:00
Greg Wilkins 17b6eee5ac
Jetty 9.4.x 2233 ssl flush try again 2 (#2726)
Major refactor of SslConnection to address #2233 and to simplify in preparation for java-11 support.

Made the `needFillInterest` and `onIncompleteFlush` methods the primary stateful methods with state for fill and flush side that does not reproduce state already held by the SslEngine itself.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-07-18 10:11:35 +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
Simone Bordet a557a84447 Fixes #2530 - Client waits forever for cancelled uploads.
Reworked implementation after review.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-07-10 11:34:56 +02:00
Simone Bordet 6553957278 Fixes #2530 - Client waits forever for cancelled uploads.
Added comment after review.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-07-09 17:26:05 +02:00
Simone Bordet 0c8b33e581 Fixes #2530 - Client waits forever for cancelled uploads.
After discussion on openjdk/nio-dev, we now wakeup the selector
after closing a socket, so that the SelectionKey can be removed
from the Selector and the TCP stack notified that the socket
has been really closed, so that it can send RST to clients.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-07-09 10:02:45 +02:00
Greg Wilkins 4f54447585
Jetty 9.4.x 2501 accept listener (#2511)
* Issue #2501 - Accept Listener
* Issue #2501 - Include accepting connections in connection limit.
* AcceptRateLimit minimal delay

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-06-19 09:03:54 +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
Simone Bordet 4f1dd352d6
Issue #2468 - Remove SoLinger. (#2644)
* Issue #2468 - Remove SoLinger.

For non-blocking sockets, StandardSocketOptions#SO_LINGER javadocs
report that the behavior is undefined. In JDK 11 setting SoLinger
for non-blocking sockets will be ignored.

As such, there is no point in allowing SoLinger to be configured
in Jetty that only uses non-blocking sockets.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-06-09 13:21:24 +02:00
Greg Wilkins 482e207392
Merge pull request #2636 from lachlan-roberts/jetty-9.4.x-2592-WriteFlusher-Cleanup
Issue #2592 - WriteFlusher Cleanup
2018-06-09 09:56:04 +02:00