Commit Graph

4786 Commits

Author SHA1 Message Date
Joakim Erdfelt 91d5e3355a
Update URLs for new jetty locations 2024-06-21 11:41:01 -05:00
Joakim Erdfelt 6bebb2ddd2
Update URL references to jetty.org 2024-06-20 09:41:42 -05:00
Simone Bordet 57266039d8 Fixes #11527 - Reduce ByteBuffer churning in HttpOutput.
Now releasing the buffer back into the pool.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2024-03-19 11:17:28 +01:00
Joakim Erdfelt cd804fd8de
Merge pull request #10127 from LoggingResearch/jetty-10.0.x
Align Logging Level for Listener Timeout Exceptions with Debug
2024-01-26 09:21:07 -06:00
Simone Bordet f620f99c78
Added clarifying comment to KeyStore content.
Restored precise check when a SAN is present.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-12-09 18:01:05 +01:00
Simone Bordet 832f19ea8b
Merge branch 'fix-flaky' of https://github.com/wang3820/jetty.project into wang3820-fix-flaky 2023-12-09 17:43:01 +01:00
Greg Wilkins 7f2859ab49
Issue #11014 - Improve Relative Redirect Handling in Jetty 10/11 (#11018)
* Improve relative redirect handling #11014
* Common relative redirect method.
* Use the relative redirect method from redirection rules.

Signed-off-by: gregw <gregw@webtide.com>
2023-12-07 07:12:00 +11:00
Tong Wang c545324211 Fixed flaky tests
Fixed bug in testSniConnection
2023-11-29 10:40:52 -06:00
Simone Bordet f82844e2a2 Fixes #10891 - Support the "Partitioned" cookie attribute.
Added support in oej.http.HttpCookie.
Bridged support for Servlet cookies via the cookie Comment attribute.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-11-19 17:37:18 +01:00
Joakim Erdfelt cc8f976d0c
Issue #10473 - Revert jetty.sh pgrep, and update started checks (#10501)
* Revert pgrep usage in jetty.sh
* Adding test for jetty.conf
* Correcting renamed xml file
* Improved started check
+ Improved `started` function code
  - adding comment explaining steps
  - adding named parameters
+ Improved ARGS check for "jetty.state="
  option, to know when to check the
  state file.
* Make sure state.mod is before any deploy steps to ensure jetty-state file is created early.
* Early cleanup / creation of State file
* Improved `started` function
+ Don't attempt to read from State File
  if it doesn't exist
+ Don't attempt to read from PID File
  if it doesn't exist
+ DEBUG in state file logic
+ DEBUG in pid file logic
+ proper startsWith logic for state detection
* Better state debugging and pid kill

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2023-09-26 16:48:33 -05:00
Greg Wilkins 3c76f82594
Allow session idle timeout to be configured on authentication. (#10511)
Allow session idle timeout to be configured on authentication.

Signed-off-by: gregw <gregw@webtide.com>
2023-09-18 15:53:35 +10:00
Joakim Erdfelt fd88723cad
Cleanup of start properties usages in `jetty-10.0.x` (#10365)
* Cleanup start properties usages

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2023-09-15 09:59:06 -05:00
Ludovic Orban 1965a943f9 #9928 backport Request.beginNanoTime() from 12.0.x
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-08-31 09:25:54 +02:00
Joakim Erdfelt 900f50f513
Issue #10271 - new jetty-home `pid` module (#10272)
* Issue #10271 - new jetty-home module `pid`

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2023-08-25 09:12:49 -05:00
Lachlan Roberts 764c8171bc Issue #10388 - fix InetAccessHandler module
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-08-25 13:53:24 +10:00
Lachlan c55363d43f
cleanups of DateCache (#10176)
* improve the formatting for precise ms in DateCache
* return original format string with DateCache.getFormatString
* calculate index in tick constructor because format strings can be different size
* use two ticks so that switching between seconds is less likely going to have cache miss
* use boolean instead of index to denote if sub second is needed
* remove formatWithoutCache and replace with doFormat as it doesn't work with sub second time
* allow the option of not having sub second precision
* use two separate formatters for the prefix/suffix around the SSS format code
* use a simple class to store both ticks in DateCache
* rename DateCache.Tick.getString(long) to format()

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-08-24 18:43:46 +02:00
Simone Bordet 153f5dfae8 Fixes #10350 - Support Java 21 virtual threads
* Introduced module `threadpool-virtual` for Java 21.
* Updated virtual threads documentation to refer to Java 21.
* Updated requirements that the releases should use Java 21, so that the documentation can properly render the virtual threads documentation.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-08-23 11:58:24 +02:00
Simone Bordet 56e0069ed3 Fixes #9386 - SSL reports deprecated setting, but ssl.ini still uses it.
Removed references to deprecated properties `jetty.sslContext.[key|trust]StoreAbsolutePath`.
Updated documentation to explicitly report that the path can be absolute.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-07-31 19:26:20 +02:00
LoggingResearch 9826a322ef
Align Logging Level for Listener Timeout Exceptions with Debug 2023-07-19 15:03:20 +08:00
Simone Bordet 9e16d81cf8 Improvements on suggested PR.
* Made HttpChannel Dispatchable fields for REQUEST and ASYNC dispatches.
* Made AdaptiveExecutionStrategy implement Runnable to remove lambda/anonymous field.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-07-17 23:21:55 +02:00
Steven Schlansker 5db0c7b552 HttpChannel, AdaptiveExecutionStrategy: improve profiler-friendliness
In an application with multiple Jetty instances in one JVM (e.g. integration test)
when examining stack frames using the debugger or profiler, most samples
that involve user code will have these two frames in their stack.

Unfortunately, with a lambda, the different Jetty instances actually have different class names
for different lambdas, which causes stack analysis to falsely think the frames are different.

It's a little uglier, but by replacing these two specific lambdas with anonymous classes with a stable name,
the profiler is able to see that the frames are in fact the same and collapse them, improving observability.
2023-07-17 23:21:55 +02:00
Joakim Erdfelt a9c596e3d7
Updating various old/moved URL references found across project (`jetty-10.0.x`) (#10098)
* Now that the migration of `https://eclipse.org/jetty/` to `https://eclipse.dev/jetty/` has occurred, it is time to review the URI use in our project

+ Updated URLs in poms
+ Added more URIs to XmlConfiguration
+ Updated URLs in module files
+ Updated URLs in documentation
+ Updated URLs in HTML
+ Correcting bad double-scheme URLs (eg: `http://https://www.eclipse...`)
+ Updating text in *.mod files
+ Removing `/current/` from path `/jetty/documentation/current/`
+ Fixing mailing list URL

---------

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2023-07-14 12:38:45 -05:00
Joakim Erdfelt 17c593f9ea
No progress during Gzip Request Inflation results in bogus error (#9997)
* Issue #9990 - GzipHttpInputInterceptor doesn't decompress properly on some sized content.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2023-06-30 05:22:36 -05:00
Ludovic Orban e30b23aca6 #9397 fix keystores with invalid Subject Alternate Names
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-05-26 23:09:24 +02:00
Greg Wilkins cba1fd6930
Fix #9685 Date is not a content header (#9687)
resetContent does not reset Date Header

Signed-off-by: gregw <gregw@webtide.com>
2023-04-29 13:36:12 +02:00
Simone Bordet 2c61011de1
Fixes #6184 - JEP-411 will deprecate/remove the SecurityManager from … (#9616)
* Fixes #6184 - JEP-411 will deprecate/remove the SecurityManager from the JVM.

Removed usages of `SecurityManager` and `AccessControlller.doPrivileged()`.
In places where they are still necessary, now using reflection via newly introduced `SecurityUtils` class.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-04-06 10:59:02 +02:00
Simone Bordet 278ec1be69
Fixes #9237 - Decouple QTP idleTimeout from pool shrink rate. (#9498)
Introduced `QueuedThreadPool.maxEvictCount` to be the number of idle threads that are evicted in one idle timeout.

When set to 1 (the default), the old behavior is reproduced: expiring 1 thread every idle timeout.
When set to larger values, allows to keep around the threads for the idle timeout (in case of further load spikes), but allows to quickly recover OS memory when they are truly idle.

For example, with 2000 threads, 30 seconds idle timeout and idleTimeoutMaxShrinkCount=1, it will take 995 minutes (about 16.5 hrs) to shrink the pool back to 10 threads.
By setting idleTimeoutMaxShrinkCount=100, the thread pool can be shrunk to 10 threads in about 10 minutes.

Note also that the new algorithm is more aggressive at shrinking the thread pool.
Previously, a small load might have been sufficient to never evict any thread, because all threads could take turns at executing jobs so that threads were mostly idle but would never really idle time out.
The new algorithm is more aggressive even in presence of a small load, so that if `minThreads` are sufficient to cope with the small load, then the other threads are evicted.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Signed-off-by: gregw <gregw@webtide.com>
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
Co-authored-by: gregw <gregw@webtide.com>
Co-authored-by: Ludovic Orban <lorban@bitronix.be>
2023-03-31 15:36:34 +02:00
Joakim Erdfelt 9060adb8ca
Merge remote-tracking branch 'origin/jetty-10.0.x' into fix/jetty-10.0.x/jetty-sh-start-properties 2023-03-20 23:14:28 -05:00
Greg Wilkins 4d146412c8
Fix #9334 Cookie Compliance (#9402)
Fix incorrect change to RFC6265 to not support dollars in cookie names.

Signed-off-by: gregw <gregw@webtide.com>
2023-02-21 21:31:43 +11:00
gregw 7a7d69a69f Happy no year
Remove modification date from copyright notice and instead just have the
project inception year.

Signed-off-by: gregw <gregw@webtide.com>
2023-02-15 15:22:32 +11:00
Simone Bordet 7b8c2c1bf0
Fix/jetty 10 9334 review cookie cutter (#9339)
Cookie cleanup
+ New Cookie parser with clearer focus on RFC6265.
+ Better compliance modes for RFC2965
+ Introduced CookieParser interface so that old and new parsers can coexist and be selected by compliance mode.

---------

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Signed-off-by: Greg Wilkins <gregw@webtide.com>
Co-authored-by: Greg Wilkins <gregw@webtide.com>
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-15 08:38:24 +11:00
Jan Bartel e75ec5e37a
Issue #9181 NPE in SessionHandler (#9346) 2023-02-14 13:22:59 +11:00
Lachlan 622befbd0d
Merge pull request #9344 from eclipse/jetty-10.0.x-multipartCleanups
multipart cleanups jetty-10
2023-02-14 12:15:21 +11:00
jluehe f43ca5d554
LowResourceMonitor.getReasons should include detailed reason instead of hard-coded message (#9337) (#9338) 2023-02-14 09:36:33 +10:00
Lachlan 1bb928bbf0
#9344 changes from review
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-14 09:35:18 +11:00
Lachlan e623511de2
#9344 changes from review
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-14 09:35:09 +11:00
Greg Wilkins 5f25f5b389
Fix/jetty 10.0.x/uri host mismatch alt (#9343)
* Introduce HttpCompliance.MISMATCHED_AUTHORITY

* Update HttpCompliance.RFC2616

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

* Update NcsaRequestLogTest.testAbsolute

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

* Use RFC2616 mode in RFC2616 tests

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

* Alternative fix for mismatched host headers

This PR fixes the miss-matched host header issue in the Request.setMetaData method. This requires no change to the HttpParser.
A more comprehensive fix can be considered for jetty-12.

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

* Alternative fix for mismatched host headers

Updates from review

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

---------

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: gregw <gregw@webtide.com>
Co-authored-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2023-02-14 07:43:19 +11:00
Lachlan Roberts a5344d7a26 bring back some multipart improvements from #9287
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-09 21:25:39 +11:00
Joakim Erdfelt 5ca878f334
Report bad format string on error
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2023-02-06 15:33:19 -06:00
Greg Wilkins 8bf7c9cef8
Fix #9285 use possibly wrapper response for redirection (#9286)
Use the servlet response sendRedirect method.
Always close the connection if there is content.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2023-02-05 09:18:24 +11:00
Joakim Erdfelt 4993291af0
Wrong value of `RequestDispatcher.FORWARD_CONTEXT_PATH` attribute on root context (#9123)
* Wrong value of RequestDispatcher.FORWARD_CONTEXT_PATH on root context

* Fixes #9119 - uses proper context path that
  satisfies the root context rules of the servlet
  spec

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2023-01-20 08:16:43 -06:00
Joakim Erdfelt 7e1de8b1e2
Issue #8973 - Rework KeyStoreScanner handling for symlink related changes (#9014)
* Issue #8973 - Rework KeyStoreScanner handling for symlink related changes

+ Removed changes from #8786 and #8787
+ More test cases
+ revert jetty.sslContext.reload.followLinks boolean
+ Scanner should follow its own linkOptions setting
+ remove bad documentation in module-ssl-reload.adoc

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
Co-authored-by: Lachlan Roberts <lachlan@webtide.com>
2022-12-07 09:24:19 -06:00
Simone Bordet a546027db8
Fixes #9006 - WebSocket MessageInputStream.read() returns signed byte
Now properly coverting to `int`.
Added test.

Also fixed MultiPartInputStreamParser.Base64InputStream for the same issue.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-12-06 15:29:05 +01:00
Jan Bartel cd7482a151
Issue #8460 simplify DefaultSessionIdManager start (#8464)
* Issue #8460 check DefaultSessionIdManager is started
2022-11-23 13:47:29 +11:00
Simone Bordet e33c9a1284
Improved documentation about virtual threads. (#8900)
Added programming guide section about Jetty threading model.
Updated operations guide with new sections about virtual threads.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-11-21 21:16:10 +01:00
Joakim Erdfelt 44666573e2
Merge pull request #8906 from eclipse/fix/jetty-10-gziphandler-status-304-vary
Issue #8905 - GzipHandler should include `Vary` header on 304 (Not Modified) responses (per RFC9110)
2022-11-21 10:23:49 -06:00
Simone Bordet 83154b4ffe
Fixes #8863 - Provide a possibility to name virtual threads (#8903)
* Fixes #8863 - Provide a possibility to name virtual threads

Reworked the VirtualThreads APIs to be based on `Executor` rather than just `boolean`.
Introduced Jetty module `threadpool-virtual-preview`.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-11-21 15:39:54 +01:00
Greg Wilkins 55e9f738c9
Fix #8897 Ignore conditional headers as per RFC7232 (#8899)
* Ignore date based headers if etag ones are present.
* Also avoid parsing dates unless necessary.
* Check a resource has a lastModified date

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2022-11-17 12:27:21 +11:00
Joakim Erdfelt cf0193421e
Issue #8905 - GzipHandler should include `Vary` header on 304 (Not Modified) responses (per RFC9110)
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2022-11-16 14:31:44 -06:00
Lachlan 690220fc40
Merge pull request #8787 from eclipse/jetty-10.0.x-8786-KeyStoreScanner-Symlink
Issue #8786 - add configuration for KeyStoreScanner to not resolve aliases
2022-11-10 17:17:59 +11:00