Commit Graph

4553 Commits

Author SHA1 Message Date
Greg Wilkins 9f82ca0a80
Use File.list and File.walk within a try with resource (#5718)
* Use File.list and File.walk within a try with resource

The API contract of File.list and File.walk requires them to be closed after use.

* Fix from review

Left out filter

* Fix from review

Factored out deleteFile with better debug

* Fix from review

Can delete files whilst walking

* Fix from review

Restored sweepFile
fixed minor code suggestions
2020-11-24 18:12:42 +01:00
Joakim Erdfelt e8683cba9f Updating to version 9.4.36-SNAPSHOT 2020-11-20 16:05:27 -06:00
Joakim Erdfelt bdc54f03a5 Updating to version 9.4.35.v20201120 2020-11-20 15:05:50 -06:00
Greg Wilkins 14f94f738d
Issue #5605 unconsumed input on sendError (#5637)
* Issue #5605 unconsumed input on sendError

Add Connection:close if content can't be consumed during a sendError. Processed after the request has returned to the container.

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* Update from review

 + Add close on all uncommitted requests when content cannot be consumed.

* Update from review

 + fixed comment
 + space comma

* Only consume input in COMPLETE if response is >=200 (ie not an upgrade or similar)

* Updated to be less adventurous

I do not think it was valid to always consumeAll in COMPLETE as this could break upgrades with both 101s and 200s
Instead I have reverted to having this consumeAll logic only:
 + in sendError once control has passed back to the container and we are about to generate an error page.
 + in front of all the sendRedirection that we do without calling the application first.

Extra tests also added

* Updated to be less adventurous

reverted test

* Testcase for odd sendError(400) issue.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

* Fix for odd sendError(400) issue.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>

* Testcase for odd sendError(400) issue.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

* Always try to consumeAll on all requests

* Refinements after testing in 10

* Refinements after testing in 10

Fixed test

* Fixed comment from review

* Updates from review

+ added redirect methods that consumeAll
+ ensureContentConsumedOrConnectionClose renamed to ensureConsumeAllOrNotPersistent
+ ensureConsumeAllOrNotPersistent now handles HTTP/1.0 and HTTP/1.1 differently

* better consumeAll implementation

* update from review

 + better javadoc
 + filter out keep-alive
 + added more tests

* update from review

 + better javadoc

* update from review

 + fixed form redirection test for http 1.0 and 1.1

* update from review

 + HttpGenerator removes keep-alive if close present
 + Use isRedirection

Co-authored-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2020-11-18 10:40:05 +01:00
Joakim Erdfelt 1448444c65
Merge pull request #5560 from eclipse/jetty-9.4.x-5539-statisticsservlet-output
Issue #5539 - Proper StatisticsServlet output format via content negotiation
2020-11-17 08:52:34 -06:00
Greg Wilkins 71087e53a6
Minor cleanup SecureRequestCustomizer (#5660)
* For #5650 protect from bad SslSession

Better protection from a bad SslSession like seen in #5650

* review indicated that there is too much depth to defend.  So just a little cleanup in this PR.
2020-11-17 13:21:03 +01:00
Joakim Erdfelt 314c65fb14
Issue #5539 - Adding StatisticsServlet tests in test-distribution
+ Updating module definition for JSON

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-11-16 12:31:28 -06:00
Greg Wilkins 850a0330ff
Cleanup request/response recycle #4711 (#5643)
* Cleanup request/response recycle #4711

Reordered recycle in request and response to field order so that we can check that all fields are recycled.

* Fixed ordering of reader consumption

* update from review
2020-11-16 11:48:33 +01:00
Greg Wilkins f4c32e788a
Fix #5562 Improve HTTP Field cache allocation (#5565)
* Fix #5562 Improve HTTP Field cache allocation

Fix #5562 by initially putting cacheable fields into a inexpensive arraylist.
Only create the Trie (with space and complexity costs) if a second request is received.

* Fixed NPE

* Feedback from review

Create `HttpHeader.isPseudo()`` method
improved clarity with `createFieldCacheIfNeeded()``

* Feedback from review

Only defer Trie creation to first cacheable field, not until next request.

* Updates from review

* Update from review

 + more javadoc
 + empty set return
2020-11-12 17:05:32 +01:00
Lachlan Roberts e937b34a82 fixes to XML formatting
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-11-10 00:11:21 +11:00
Lachlan Roberts 5579b805e3 fix some formatting and comments in XML files
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-11-09 23:38:51 +11:00
Lachlan Roberts 4c172b5bbb Fix xml <Ref/> tags using id instead of refid.
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-11-09 23:30:36 +11:00
Joakim Erdfelt 71ad5447a4
Merge remote-tracking branch 'origin/release-9.4.34' into jetty-9.4.x 2020-11-04 10:24:21 -06:00
Greg Wilkins f88f09a148
SessionCookieConfig name may be null (#5557)
* SessionCookieConfig name may be null

Protect against NPE by make a null name in SessionCookieConfig deactive session cookies.

* SessionCookieConfig name may be null

Protect against NPE by make a null name in SessionCookieConfig deactive session cookies.

* SessionCookieConfig name may be null

Protect against NPE by make a null name in SessionCookieConfig deactive session cookies.

* feedback from review

added static method to convert null name to default.
2020-11-03 16:22:26 +01:00
Joakim Erdfelt edaadff55b Updating to version 9.4.35-SNAPSHOT 2020-11-02 09:04:51 -06:00
Joakim Erdfelt e46af88704 Updating to version 9.4.34.v20201102 2020-11-02 08:03:51 -06:00
Simone Bordet a1b3d3319d
Merge pull request #5491 from eclipse/jetty-9.4.x-5488-jetty-dir.css
Fixes #5488 - jetty-dir.css not found when using JPMS.
2020-11-02 10:40:19 +01:00
Simone Bordet 4a4a73df2e Fixes #5488 - jetty-dir.css not found when using JPMS.
Moved jetty-dir.css from jetty-util to jetty-server,
so that it can be found by ResourceHandler when using JPMS.

Updated DefaultServlet to call a ResourceHandler method
to retrieve the stylesheet.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-10-22 16:48:27 +02:00
Joakim Erdfelt e726eefb0b Updating to version 9.4.34-SNAPSHOT 2020-10-20 18:55:39 -05:00
Joakim Erdfelt 1be6875565 Updating to version 9.4.33.v20201020 2020-10-20 18:28:51 -05:00
Joakim Erdfelt 07d35d32ae Fixing windows build/test issues. 2020-10-16 15:39:38 -05:00
Joakim Erdfelt 97f795160c Fixing windows build/test issues. 2020-10-16 13:54:27 -05:00
gregw ba477fa5a7
Fixes #5454 Reset Error Context
Reset the error context when a request is recycled.
2020-10-16 08:16:43 -05:00
Joakim Erdfelt fdd880b66b
Issue #5451 - Cleanup of temp file cleanup.
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-10-15 18:10:38 -05:00
Joakim Erdfelt 89dc16ae09
Issue #5443 - Forwarding Headers are optional
Cleanup handling of forwarded.authority

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-10-13 10:27:01 -05:00
Joakim Erdfelt 0721178007
Issue #5443 - Forwarding Headers are optional
The `X-Proxied-Https: off` case should have an implied port
not a hardcoded port.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-10-13 08:31:32 -05:00
Joakim Erdfelt 457025bc16
Issue #5443 - Forwarding Headers are optional
Additional NPE safety checks.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-10-13 08:24:49 -05:00
Joakim Erdfelt ea1103077c
Issue #5443 - Forwarding Headers are optional
+ Additional tests for HTTP/1.0
+ Overly complex negative test cases for
   `X-Forwarded-Proto: http` and
   `X-Proxied-Https: off`
+ Failure testcase for `X-Proxied-Https: foo`

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-10-13 08:20:27 -05:00
Joakim Erdfelt abdada05b1
Issue #5443 - Forwarding Headers are optional
+ Improve / document implied secure scheme behaviors
  for both `Proxy-Ssl-Id` or `Proxy-auth-cert`

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-10-13 07:15:38 -05:00
Joakim Erdfelt f0681b33eb
Issue #5443 - Forwarding Headers are optional
+ Simplify isSecure handling in customize.
+ Simplify handling of `Proxy-Ssl-Id` header.
+ Simplify handling of `Proxy-auth-cert` header.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-10-13 07:03:37 -05:00
Joakim Erdfelt 0b646ee6b7
Issue #5443 - Forwarding Headers are optional
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-10-13 05:10:42 -05:00
Joakim Erdfelt c2266fdd63
Issue #5417 - Cleanup of PR from Review
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-10-12 04:50:51 -05:00
Joakim Erdfelt 149f389fd8
Issue #5417 - Honoring implied ports on ForwardedRequestCustomizer better
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-10-09 09:54:57 -05:00
Greg Wilkins c40b955e09
Issue #5022 Filter Cache cleanup (#5271)
* Issue #5022 Filter Cache cleanup

Issue #5022 Filter Cache cleanup:
 + Fixed many compiler warnings
 + removed old LazyList leftovers
 + Don't create holder string for source unless required
 + Only have a single type of chain, so it can be wrapped regardless of cache
 + Reverse mappings lists to make filter chain creation easier
 + build chain directly rather than build a list then a chain

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* added comment to explain ordering

Signed-off-by: gregw <gregw@webtide.com>

* More cleanups

* fixed toString format
turn off debug in OSGI test
2020-10-05 13:29:11 +02:00
Joakim Erdfelt 85e257fc98 Updating to version 9.4.33-SNAPSHOT 2020-09-30 11:53:09 -05:00
Joakim Erdfelt de97d26f7b Updating to version 9.4.32.v20200930 2020-09-30 11:03:24 -05:00
Jan Bartel eb02009f87
Issue #5365 ISE not NPE if fail to create session. (#5370)
If SessionHandler.newHttpSession(Request) fails to create a session
it returns null. Request.getSession(true) cannot throw a checked
exception, nor can it return null, so we should throw ISE.

Signed-off-by: Jan Bartel <janb@webtide.com>
2020-09-30 16:51:54 +02:00
Joakim Erdfelt 3423375a97
Issue #5357 - Updating to https://eclipse.org/ (#5358)
* Issue #5357 - Updating to https://eclipse.org/

 - Removing redundant <url> refs in pom.xml
 - Correcting bad indenting from merge
 - Correcting mailing list references
 - Correcting bugs.eclipse.org references
 - Correcting text file references
 - Correcting html references
 - Correcting further references
 - Correcting download.eclipse.org reference
 - Adding test for demo-base /proxy/current/
 - Ensuring jetty-client is included in javadoc-proxy.war/WEB-INF/lib

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-29 11:02:32 -05:00
Lachlan 7e627359b3
Merge pull request #5276 from eclipse/jetty-9.4.x-IncludeExcludeConnectionStatistics
update documentation for statistics collection
2020-09-25 15:20:04 +10:00
Joakim Erdfelt 8fe32ce217
Merge pull request #5251 from eclipse/jetty-9.4.x-5247-forwarded-header-priority
Issue #5247 ForwardedRequestCustomizer authority order rework
2020-09-23 16:14:50 -05:00
Joakim Erdfelt ebfdf8fc1b
Issue #5247 - Updates from review by greg
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-21 10:34:28 -05:00
Joakim Erdfelt 6cf6b78a16
Issue #5246 - Adding DeflaterPool to GzipHandler.dump
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-17 10:27:15 -05:00
Joakim Erdfelt 290c98e9b1
Issue #5285 - Making Content-Encoding for form content consistent
+ Fixing unit test expectations

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-16 15:48:03 -05:00
Joakim Erdfelt 844f134d21
Issue #5285 - Using Status code 415 Unsupported Media Type instead.
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-16 15:39:43 -05:00
Jan Bartel bd589de512
Issue #5268 Change WARN to DEBUG for NullSessionCache eviction setter. (#5270)
Signed-off-by: Jan Bartel <janb@webtide.com>
2020-09-16 11:27:07 +02:00
Lachlan Roberts fbaabf5c8f update documentation for statistics collection
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-09-16 15:48:27 +10:00
Joakim Erdfelt 59b85b6288
Issue #5247 - Updating Javadoc on ForwardedRequestCustomizer
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-11 11:58:04 -05:00
Joakim Erdfelt a2233ce233
Issue #5247 - Introduce ForwardedRequestCustomizer.Priority enum
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-11 11:17:31 -05:00
Joakim Erdfelt ac42cbd143
Issue #5247 - Improve testing of ForwardedRequestCustomizer
+ Merge ProxyPass tests from CheckReverseProxyHeadersTest into
  ForwardedRequestCustomizerTest
+ Deleted CheckReverseProxyHeadersTest.java
+ Add more tests for ForcedHost configuration
+ Updated ForwardedRequestCustomizer to conform to expectations

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-11 11:11:09 -05:00
Joakim Erdfelt 4280303046
Issue #5247 - Document ForwardedRequestCustomizer authority search order
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-09 15:20:21 -05:00
Joakim Erdfelt f74cada660
Issue #5247 - Priority based ForwardedRequestCustomizer
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-09 14:56:33 -05:00
Joakim Erdfelt 165e59b3e2
Merge pull request #5226 from eclipse/jetty-9.4.x-5224-xforwarded-multiple-ports
Issue #5224 X-Forwarded-Host support for port
2020-09-09 11:37:33 -05:00
Joakim Erdfelt 2896ed31d6
Issue #5224 - Updating ForwardedRequestCustomizerTest expectations
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-08 12:34:53 -05:00
Joakim Erdfelt 56b1d17d79
Issue #5233 - correcting NCSARequestLogTest expectation on unsupported version
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-08 05:59:41 -05:00
Joakim Erdfelt b2e0f69ea8
Issue #5233 - Bad/Unsupported HTTP version should return 505 not 400.
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-04 12:23:11 -05:00
Joakim Erdfelt 5fef14019a
Merge pull request #5215 from eclipse/jetty-9.4.x-5214-head-huge-static
Issue #5214 - Servlet HEAD doesn't support content-length over Integer.MAX_VALUE
2020-09-02 12:54:38 -05:00
Joakim Erdfelt e2134b13d7
Issue #5224 - X-Forwarded-Host support for port
+ More test cases
+ Allowing X-Forwarded-Host to parse port (if present properly)

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-02 10:27:33 -05:00
Joakim Erdfelt e4ca153364
Issue #5224 - Test to replicate reported issue
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-02 09:34:16 -05:00
Jan Bartel ef0c752476
Issue #4888 Ensure HttpSessionListener can access session via (#5220)
Issue #4888 Ensure HttpSessionListener can call Request.getSession

Signed-off-by: Jan Bartel <janb@webtide.com>
2020-09-02 11:53:23 +02:00
Greg Wilkins a6b7f73019 Merge branch 'jetty-9.4.x-5214-head-huge-static' of https://github.com/eclipse/jetty.project into jetty-9.4.x-5214-head-huge-static 2020-08-31 18:22:10 +02:00
Greg Wilkins 9e326fe520 + improved sentinels values for content-length
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-08-31 18:19:11 +02:00
Joakim Erdfelt 9128fc48e4
Cleanup dead code in ResourceService
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-08-31 11:16:22 -05:00
Joakim Erdfelt dcb06d3c35
Issue #5214 - Use known content_length when in HEAD mode
+ Adding DefaultServlet.doHead() to avoid servlet wrapping
+ Making ResourceService HEAD aware

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-08-31 11:03:49 -05:00
Joakim Erdfelt eba360f662
Issue #5214 - Use known content_length when in bypass write
+ In the case of HEAD, the servlet-api response is a wrapper
  of javax.servlet.http.HttpServlet$NoBodyResponse
  We know the content_length, use it.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-08-31 09:43:04 -05:00
Lachlan 001def4905
Merge pull request #5175 from eclipse/jetty-9.4.x-5105-StatisticsHandler
Issue #5105 - StatisticsHandler Graceful Shutdown of Async Requests
2020-08-28 11:54:45 +10:00
Lachlan Roberts a9c90d3309 Issue #5105 - change asyncGraceful to gracefulShutdownWaitsForRequests
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-08-27 08:59:13 +10:00
Lachlan Roberts 8edb7682cd DebugHandler should use isAsyncStarted() instead of isSuspended()
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-08-25 10:40:09 +10:00
Lachlan Roberts 2d5da1fa35 StatisticsHandler should still return 503 responses on shutdown
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-08-25 10:34:59 +10:00
Lachlan Roberts 8faa71818f change addToAllConnectors method to addBeanToAllConnectors
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-08-25 10:22:18 +10:00
Lachlan Roberts c0268c590f change name of waitForSuspendedRequestsOnShutdown to asyncGraceful
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-08-24 16:19:59 +10:00
Lachlan Roberts 623d1be7c7 Change the way ConnectorStatistics is added to the Servers Connectors
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-08-21 15:45:58 +10:00
Lachlan Roberts 70a679f5f4 reorder some CustomRequestLog methods to be same as jetty-10
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-08-21 10:29:22 +10:00
Lachlan Roberts 12381e9cf5 cleanup various warnings and TODOs in CustomRequestLog
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-08-20 12:02:00 +10:00
Lachlan Roberts 0fae221afa Issue #5105 - fix GracefulStopTest expectations from 503s to 404s
StatisticsHandler no longer gives 503 responses after shutdown.

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-08-20 07:27:12 +10:00
Lachlan Roberts a65f00156d Issue #5105 - add optional configuration to not wait for suspended requests in StatisticsHandler
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-08-20 07:27:12 +10:00
Lachlan Roberts 32358b1b77 Issue #5105 - fix StatisticsHandler bug with async dispatched requests
If the request is async dispatched, the check state.isSuspended() is not
correct to determine if the request was async or not. The check
state.isAsyncStarted() should be used instead.

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-08-20 07:27:12 +10:00
Thomas Draebing a46ed5b5f0 Also manage graceful shutdown of already started async requests
Signed-off-by: Thomas Draebing <thomas.draebing@sap.com>
2020-08-19 09:59:21 +02:00
Simone Bordet 7b3dccc1bf Issue #5104 - AbstractProxyServlet include incorrect protocol version in Via header when accessed over H2.
Added HttpFields.computeField() for HttpHeader too and updated usages.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-08-13 11:50:43 +02:00
Simone Bordet 79d340fdb6 Fixes #5104 - AbstractProxyServlet include incorrect protocol version in Via header when accessed over H2.
* Introduced HttpFields.computeField() to put/append header values.
* Reworked AbstractProxyServlet.addViaHeader().

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-08-13 00:08:52 +02:00
Simone Bordet dd4c1dbac0 Merged branch 'jetty-9.4.x' into 'jetty-9.4.x-5079-ipv6_brackets'. 2020-08-08 23:21:14 +02:00
Joakim Erdfelt dcf867cd2b
Issue #3916 - Improve multi range response Content-Length calc
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-08-08 11:34:25 -05:00
Joakim Erdfelt 2206b3edae
Issue #3916 - Fixing broken Content-Length evaluation
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-08-08 07:18:02 -05:00
Simone Bordet d53d9d8a1d Fixes #5079 - :authority header for IPv6 address not having square brackets.
On the client:
* Origin.Address.host is passed through HostPort.normalizeHost(),
so that if it is IPv6 is bracketed.
Now the ipv6 address passed to an `HttClient` request is bracketed.
* HttpRequest was de-bracketing the host, but now it does not anymore.

On the server:
* Request.getLocalAddr(), getLocalName(), getRemoteAddr(),
getRemoteHost(), getServerName(), when dealing with an IPv6 address,
return it bracketed.
The reason to return bracketed IPv6 also from *Addr() methods is that
if it is used with InetAddress/InetSocketAddress it still works, but
often it is interpreted as a URI host so brackets are necessary.
* DoSFilter was blindly bracketing - now it does not.

Added a number of test cases, and fixed those that expected
non-bracketed IPv6.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-08-07 15:53:19 +02:00
Jan Bartel 4f57810217
Issue #5081 - HouseKeeper synchronization (#5099)
* Issue #5081 HouseKeeper synchronization

Signed-off-by: Jan Bartel <janb@webtide.com>
2020-08-05 15:33:27 +02:00
Greg Wilkins 66ec16006e
Issue #5088 Review ContextHandler locking (#5094)
* Issue #5088 Review ContextHandler locking

The locking was primarily as a memory guard for the availability status, which was already volatile.
Have instead using an AtomicReference with a simple state machine layered on top of start/stop lifecycle.
There was also protection for AttributesMap, which is no longer needed as AttributesMap is now concurrent.

* Issue #5088

updates from review

* Issue #5088

updates from review (better this time)
2020-07-30 17:58:34 +02:00
Joakim Erdfelt fe9deae849 Updating to version 9.4.32-SNAPSHOT 2020-07-23 13:53:47 -05:00
Joakim Erdfelt 450ba27947 Updating to version 9.4.31.v20200723 2020-07-23 12:46:54 -05:00
Greg Wilkins 65de149f84
Issue #5057 - Included root context path (#5058)
* Fixes #5057 Included root context path

Root context path in include should be empty string.

* Issue #5057

merged context path methods as result of review.
ServletContent.getContextPath now returns the encoded contextPath (if anybody is silly enough to have one).
2020-07-20 17:35:48 +02:00
Jan Bartel 668174d91d Issue #5025 - wrong welcome file handling with dispatcher.include() and non-default mapping (#5026)
Signed-off-by: Grzegorz Grzybek <gr.grzybek@gmail.com>
Signed-off-by: Jan Bartel <janb@webtide.com>
2020-07-16 12:26:39 +02:00
Lachlan bbb0f6617c
Merge pull request #5042 from eclipse/jetty-9.4.x-5019-SslReload
Issue #5019 - hot-reload SSL certificates if keystore file changed
2020-07-16 09:09:03 +10:00
Lachlan 42ea202858
Merge pull request #5047 from eclipse/jetty-9.4.x-moduleCommentDoNotEdit
the "DO NOT EDIT" comment in .mod files should start with '#'
2020-07-16 08:43:00 +10:00
Greg Wilkins 5c1dda3f7c
Issue #5029 Relative Redirection (#5038)
* Issue #5029 Relative Redirection

Provide option to allow relative redirection

* Issue #5029 Relative Redirection

Fixed checkstyle

* rename from review
2020-07-15 23:14:26 +02:00
Lachlan Roberts de1b6745c5 the DO NOT EDIT comment in .mod files should start with '#'
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-07-15 16:47:22 +10:00
Lachlan Roberts 2541f1f648 add javadoc for KeyStoreScanner class
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-07-15 11:20:57 +10:00
Lachlan Roberts a83844df32 changes from review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-07-14 16:10:07 +10:00
Lachlan Roberts 62ee077b79 move code of ssl-reload module to jetty-util, move module files to jetty-server
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-07-13 23:11:09 +10:00
Lachlan effcccd27a
Merge pull request #4980 from eclipse/jetty-9.4.x-threadPoolDocumentation
fix documentation on where to configure ThreadPool
2020-07-07 18:18:48 +10:00
Simone Bordet f2c6b67827
Fixes #4971 - Simplify Connection.upgradeFrom()/upgradeTo(). (#5008)
Fixes #4971 - Simplify Connection.upgradeFrom()/upgradeTo().

Now the upgrade-from connection produces a "floating" buffer 
(not belonging to a pool), so that it can release the original buffer.

The upgrade-to connection is free to copy or store this "floating" buffer.

Strengthened ByteBufferPool behavior when releasing non-pooled
ByteBuffers: the buffer is now discarded.

Updated javadocs and all implementations.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-07-06 22:45:03 +02:00
Lachlan 9a56301de1
Merge pull request #5004 from eclipse/jetty-9.4.x-4985-AttributeNameSet
Issue #4985 - fix NPE related to use of Attributes.Wrapper getAttributeNameSet()
2020-07-06 11:34:27 +10:00
Simone Bordet ae43b70a9f
Jetty 9.4.x 4967 buffer corruption for http2 failures (#5001)
Fixes #4967 - Possible buffer corruption in HTTP/2 session failures

Partially reverted the changes introduced in #4855, because they
were working only when sends were synchronous.

Introduced ByteBufferPool.remove(ByteBuffer) to fix the issue.
Now when a concurrent failure happens while frames are being
generated or sent, the buffer is discarded instead of being
recycled, therefore resolving the buffer corruption.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-07-03 16:35:33 +02:00
Lachlan Roberts f35d6cfd80 Issue #4985 - remove TODO in Dispatcher
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-07-02 16:02:24 +10:00
Lachlan Roberts 9126b282b1 Merge remote-tracking branch 'origin/jetty-9.4.x' into jetty-9.4.x-4985-AttributeNameSet 2020-06-30 11:22:41 +10:00
Joakim Erdfelt 3adec35cf5
Fixing CustomImportOrder checkstyle violations
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-06-25 09:25:05 -05:00
Lachlan Roberts 693312a577 Issue #4985 - ensure every attribute in getAttributeNameSet has a non null value
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-06-25 23:15:12 +10:00
Lachlan Roberts 5ce5737395 fix information on ThreadPool configuration
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-06-18 17:45:32 +10:00
Joakim Erdfelt 6df6fa33b8 Updating to version 9.4.31-SNAPSHOT 2020-06-11 08:24:34 -05:00
Joakim Erdfelt 271836e4c1 Updating to version 9.4.30.v20200611 2020-06-11 07:21:18 -05:00
Jan Bartel cb09abe873
Issue #4920 Restore ability to invalidate sessions on shutdown (#4933)
Signed-off-by: Jan Bartel <janb@webtide.com>
2020-06-10 18:40:19 +02:00
Simone Bordet 56bda1b3ae
Jetty 9.4.x 4855 h2spec failures (#4946)
* Fixes #4855 - Occasional h2spec failures on CI

In case of bad usage of the HTTP/2 API, we don't want to close()
the stream but just fail the callback, because the stream
may be performing actions triggered by a legit API usage.

In case of a call to `AsyncListener.onError()`, applications may decide to call
AsyncContext.complete() and that would be a correct usage of the Servlet API.
This case was not well handled and was wrongly producing a WARN log with an
`IllegalStateException`.

Completely rewritten `HttpTransportOverHTTP2.TransportCallback`.
The rewrite handles correctly asynchronous failures that now are executed
sequentially (and not concurrently) with writes.
If a write is in progress, the failure will just change the state and at the
end of the write a check on the state will determine what actions to take.

A session failure is now handled in HTTP2Session by first failing all the
streams - which notifies the Stream.Listeners - and then failing the session
- which notifies the Session.Listener.
The stream failures are executed concurrently by dispatching each one to a
different thread; this means that the stream failure callbacks are executed
concurrently (likely sending RST_STREAM frames).
The session failure callback is completed only when all the stream failure
callbacks have completed, to ensure that a GOAWAY frame is processed after
all the RST_STREAM frames.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-06-09 13:15:05 +02:00
Simone Bordet 029470c5dc Fixes #4939 - acceptorQueueSize [sic]
acceptorQueueSize -> acceptQueueSize.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-06-04 18:31:40 +02:00
Lachlan Roberts 38f56f5973 make some test methods public to fix build
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-06-04 09:26:35 +10:00
Greg Wilkins ff8ae56fa9
Issue #4936 response buffer corruption (#4937)
* Issue #4936 - Adding LargeHeaderTest to replicate issue

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

* Issue #4936 - Updating LargeHeaderTest to use ServerConnector

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

* Issue #4936 - Fail LargeHeaderTest if client detects issues.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

* Issue #4936 large response header buffer corruption

If the response buffer is too large, the header buffer was released
but not nulled, then an exception thrown, which again released the
not nulled buffer.  The buffer thus ends up in the buffer pool twice!

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* Issue #4936 large response header buffer corruption

removed old comment

Signed-off-by: Greg Wilkins <gregw@webtide.com>

Co-authored-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-06-03 22:54:12 +02:00
Joakim Erdfelt f9b75ff1a3
Issue #4923 - Applying changes requested in PR
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-06-01 07:15:07 -05:00
Joakim Erdfelt b6d24c2396
Issue #4923 - Applying changes requested in PR
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-06-01 07:13:28 -05:00
Joakim Erdfelt 6a953e3a0e
Issue #4923 - Applying changes requested in PR
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-05-29 16:30:08 -05:00
Joakim Erdfelt c1c2c07a51
Issue #4923 - restore caching of SSLSession information for SSL Attributes
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-05-29 13:30:59 -05:00
Jan Bartel 84cb97e6bd
Issue #4885 do not allow cookies to be set from an include (#4915)
Signed-off-by: Jan Bartel <janb@webtide.com>
2020-05-28 10:51:40 +02:00
Jan Bartel aae64f181c
Issue #4894 use schema and/or catalog name when creating sessions table (#4908)
Signed-off-by: Jan Bartel <janb@webtide.com>
2020-05-27 13:42:01 +02:00
Greg Wilkins e82cacfdb6
Jetty 9.4.x single context optimisation (#4909)
* Optimisation for single context

It is a frequent deployment mode to have only a single context.
In that case, the ContextHandlerCollection can bypass a bit of
looping/matching/selecting and just call the single context,
which it works out itself anyway if the request applies to it.

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* Optimisation for single context

updates from review

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-05-27 09:53:13 +02:00
olivier lamy 1249763aad remove changes to DatabaseAdaptor with new fields username/password, use our own username/password in maria_db tests
Signed-off-by: olivier lamy <oliver.lamy@gmail.com>
2020-05-27 16:00:23 +10:00
olivier lamy c05bd6c26d use testcontainers/docker to run jdbc sessions tests with Mariadb remote
Signed-off-by: olivier lamy <oliver.lamy@gmail.com>
2020-05-27 16:00:23 +10:00
Joakim Erdfelt 5d6f3e2ddc Updating to version 9.4.30-SNAPSHOT 2020-05-21 13:42:25 -05:00
Joakim Erdfelt 77c232aed8 Updating to version 9.4.29.v20200521 2020-05-21 12:04:14 -05:00
Jan Bartel 52e7dd4873
Issue #4895 SessionCache flushOnResponseCommit with invalid session (#4896)
Signed-off-by: Jan Bartel <janb@webtide.com>
2020-05-20 23:05:53 +02:00
Lachlan Roberts 7111f5f161 Issue #4861 - AsyncAttributes should wrap ServletAttributes inner AttributesMap
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-05-14 08:33:31 +10:00
Lachlan Roberts 4aece5e9cf Issue #4861 - changes from review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-05-13 23:12:22 +10:00
Lachlan Roberts 629e106045 Issue #4861 - increase efficiency of ServletAttributes when going async
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-05-13 19:10:11 +10:00
Lachlan Roberts 9f39fd1dd1 Issue #4861 - reduce garbage created by the async request attributes
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-05-12 18:28:23 +10:00
Joakim Erdfelt 86a40a07d6
Merge pull request #4863 from eclipse/jetty-9.4.x-4860-NullHttpFields
Issue #4860 - NPE from HttpFields
2020-05-11 21:04:50 -05:00
Greg Wilkins e86977394e
Issue #4828 Buffer Corruption (#4864)
+ improve synchronization around releaseBuffer
 + improve synchronization around acquireBuffer
 + made acquireBuffer private.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-05-11 21:48:06 +02:00
Greg Wilkins c497b61917 Issue #4860 NPE from HttpFields
Paranoid catch if sending and exception page throws an exception.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-05-11 13:57:17 +02:00
Ludovic Orban 409db8d065 introduce socket configuration properties in Jetty XML files
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2020-05-08 13:14:50 +02:00
Ludovic Orban 072cc978fb
add HttpConfiguration.Customizer implementation that sets request attributes containing the real local and remote address:port pairs (#4849)
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2020-05-07 19:53:15 +02:00
Joakim Erdfelt c50a52a392
Merge pull request #4844 from lorban/jetty-9.4.x-4843-proxyv2-ignored-address-length
proxy v2 skip address length bytes when LOCAL command is specified
2020-05-07 10:16:57 -05:00
Joakim Erdfelt e4fd49dc36
Merge pull request #4838 from eclipse/jetty-9.4.x-4835-gziphandler-flush
Issue #4835 - Addressing flush/commit with GzipHttpOutputInterceptor
2020-05-05 09:54:41 -05:00
Ludovic Orban d34cb2598b proxy v2 skip address length bytes when LOCAL command is specified
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2020-05-05 13:51:30 +02:00
Joakim Erdfelt d58da0f7d2
Issue #4824 - Addressing flush/commit with GzipHttpOutputInterceptor
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-05-04 09:22:08 -05:00
Simone Bordet 2fa161c515
Merge pull request #4790 from eclipse/jetty-9.4.x-4778-sni_with_one_certificate
Fixes #4778 - Enforcing SNI when there are only non-wildcards certifi…
2020-05-04 11:35:04 +02:00
Joakim Erdfelt c645d0f7c4
Issue #4835 - Addressing flush/commit with GzipHttpOutputInterceptor
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-05-01 14:42:08 -05:00
Greg Wilkins 8fcbf6d590
Improve Attributes Handling (#4816)
* Spun out from #4814 Improve Attributes Handling

Improve attribute handling to reduce garbage and improve lookup.
Introduced a Wrapper so that request can remove any layers on reset.

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* Issue #4814 - Exposing AttributeMap.getAttributeNameSet() on Attributes.

The underlying AttributesMap already has a .getAttributeNameSet()
method, expose it on the Attributes interface.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

* Allow a set to override a secure attribute.

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* Issue #4814 - Attributes.getAttributeNames() is now defaulted

The Attributes.getAttributeNames() will use the
.getAttributeNameSet() by default now.

Updated all Attributes.Wrapper impls to use this new behavior

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

Co-authored-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-04-28 10:16:29 +02:00
Simone Bordet 426c80bf6d Fixes #4778 - Enforcing SNI when there are only non-wildcards certificates.
If SNI is required, wrap the KeyManagers with SniX509ExtendedKeyManager.
Updated the main keystore file to only have one certificate (instead of two),
since there never was the need for two certificates in the tests.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-04-18 18:15:03 +02:00
Joakim Erdfelt 5699b9ff3d Updating to version 9.4.29-SNAPSHOT 2020-04-08 13:15:04 -05:00
Joakim Erdfelt ab228fde9e Updating to version 9.4.28.v20200408 2020-04-08 12:33:56 -05:00
Simone Bordet 4e3c0c8cd7 Fixes #4751 - Refresh NetworkTraffic* classes.
Introduced NetworkTrafficSocketChannelEndPoint to replace
NetworkTrafficSelectChannelEndPoint, now deprecated.

Code and javadocs cleanup.

Moved the tests to jetty-client so that also the client is tested.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-04-07 12:04:24 +02:00
Jan Bartel cf0e3c530f
Issue #4662 Ensure contextDestroyed called after filters and servlets destroyed (#4667)
* Issue #4662 Ensure contextDestroyed called after filters and servlets destroyed

Signed-off-by: Jan Bartel <janb@webtide.com>
2020-04-06 10:12:19 +02:00
Joakim Erdfelt 1cbb8d0232
Merge pull request #4740 from eclipse/jetty-9.4.x-4638-formcontentsize-doc
Issue #4638 - updating documentation about form limits
2020-04-02 07:03:54 -05:00
Joakim Erdfelt bdaf86d38d
Issue #4638 - updating documentation about form limits
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-04-01 12:44:44 -05:00
Joakim Erdfelt 929ce34640
Issue #4529 - Fixing HTML error page from showing servlet info if configured not to do so
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-03-31 14:58:17 -05:00
Jan Bartel 524e690140
Issue #4682 Session with no attributes unreadable from jdbc (#4688)
Signed-off-by: Jan Bartel <janb@webtide.com>
2020-03-31 14:25:52 +02:00
Greg Wilkins f4da9760fd Reset trailers on recycled response
Whilst investigating #4711 for jetty-10, it was noticed that trailers are not nulled on recycled Response instances, nor on reset.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-03-25 13:47:34 +01:00