Commit Graph

1126 Commits

Author SHA1 Message Date
Joakim Erdfelt cbb3a550cc
Merge pull request #6549 from eclipse/jetty-9.4.x-remove-dead-useragents-file
Remove unused (and currently empty) useragents file
2021-07-27 12:53:23 -05:00
Joakim Erdfelt 9626dbab35
Remove unused (and currently empty) useragents file
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2021-07-27 10:33:54 -05:00
Joakim Erdfelt dae361ff26
Issue #6545 - Add more mime-types
+ Adding webp + avif + apng based on current
  `Accept` header offerings from current browsers.

Firefox 90.0
`Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8`

Chrome 92.0.4515.107
`Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9`

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2021-07-27 10:31:44 -05:00
Ludovic Orban 64a7dda668 #6491 introduce HttpParser.isTerminated()
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-07-27 11:51:08 +02:00
Simone Bordet f045b5a3ba
Issue #6473 - Improve alias checking in PathResource. (#6477)
* Issue #6473 - Improve alias checking in PathResource.

* Reverted %-escape handling for URI query parts.
* Performing canonicalization in ServletContext.getResource(),
  and improving alias checking in ContextHandler.getResource().
* Performing canonicalization checks in Resource.addPath() to avoid
  navigation above of the root.
* Test added and fixed.
* Various cleanups.
* Improved javadoc and comments

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Co-authored-by: Greg Wilkins <gregw@webtide.com>
2021-06-29 15:40:45 +02:00
Greg Wilkins 122a78aafc
Issue #6473 - canonicalPath refactor & fix alias check in PathResource (#6474)
Reduce multiple canonicalPath calls with single alias check in PathResource
Revert to decoding and the normalizing URLs so that subsequent canonicalPath calls are noops. 
Co-authored-by: Lachlan Roberts <lachlan@webtide.com>
2021-06-28 17:10:11 +10:00
Lachlan a3effb19c4
Issue #6447 - Deprecate support for UTF16 encoding in URIs (#6467)
- Merge from PR #6457.
- Also brought some other ComplianceModes back to disable ambiguous empty segments, and ambiguous encodings.

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-06-24 17:16:56 +10:00
Lachlan eca8edcea5 Create FileBufferedResponseHandler to buffer responses into a file. (#6010)
FileBufferedResponseHandler adds an HttpOutput.Interceptor to buffer all responses into a file until the output is closed. This allows the commit to be delayed until the response is complete and thus headers and response status can be changed while writing the body.

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-04-19 15:02:43 +10:00
Joakim Erdfelt e68293ef4e
Addressing copy/paste mistakes
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2021-02-24 12:47:48 -06:00
gregw f9b5974ded Fix #4275 separate compliance modes for ambiguous URI segments and separators
default modes allows both ambiguous separators and segments, but still forbids ambiguous parameters
2021-02-24 19:17:49 +01:00
Greg Wilkins 49e73dfb75
Fix #4275 #6001 separate compliance modes for ambiguous URI segments and se… (#6003)
Fix #4275 separate compliance modes for ambiguous URI segments and separators
2021-02-24 10:05:05 +01:00
Greg Wilkins 8bd4a9fad8
Fix #5999 ArrayIndexOutOfBounds for unicode in HttpURI segment (#6000)
Fixed ArrayTrie to not throw if passed a unicode character.
2021-02-23 20:03:45 +01:00
Greg Wilkins 324ab668de
More optional etag gzip fixes for #5979 (#5986)
* More optional etag gzip fixes for #5979

IF no separator defined, do not add a suffix to an etag.
Some cleanup of the implementation.

* More optional etag gzip fixes for #5979

updates from review
2021-02-18 17:24:16 +01:00
Joakim Erdfelt 10e531756b
Merge pull request from GHSA-m394-8rww-3jr7
Use comparator based sort
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: gregw <gregw@webtide.com>

Co-authored-by: gregw <gregw@webtide.com>
2021-02-18 14:14:38 +01:00
Greg Wilkins a8b4927427
Fix #5979 by allowing a configurable etag separator. (#5980)
* Fix #5979 by allowing a configurable etag separator.

Fix #5979 by allowing a configurable etag separator

* updates from review

* Updates from review

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2021-02-17 22:19:23 +01:00
gregw ea3f3a5b93 Update merge to 10 comment 2021-02-17 18:09:37 +01:00
gregw 1e364eccf8 Re re Fix rewrite tests for #5954
Re re Fix rewrite tests for #5954. Restore setPathQuery behaviour to preserve queries if none are set.
2021-02-17 12:41:55 +01:00
gregw dd5a565c08 Re re Fix rewrite tests for #5954
Re re Fix rewrite tests for #5954. Restore setPathQuery behaviour to preserve queries if none are set.
2021-02-17 12:12:56 +01:00
gregw 7769f61242 Fixed checkstyle 2021-02-16 16:55:14 +01:00
Greg Wilkins 20ef71fe5d
Fix #4275 fail URIs with ambiguous segments (#5954)
Handle URIs by first resolving relative paths and then decoding.
Added compliance mode to return 400 if there are ambiguous path segments.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2021-02-16 14:47:41 +01:00
Joakim Erdfelt 5dd987779c
Adding `WhitespaceAfter` checkstyle rule.
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2021-02-15 12:48:24 -06:00
Joakim Erdfelt 176e29e408
Happy New Year 2021
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2021-01-21 12:31:00 -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
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
Greg Wilkins bb886ad932
Fix #5575 SEARCH method (#5576)
+ Added all IANA methods
 + Used Trie for most lookups
 + Fixed ArrayTernayTrie lookup
 + optimised GET, POST and HEAD

Co-authored-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-11-11 17:48:08 +01:00
Joakim Erdfelt d612f12cf6
Issue #5451 - Removing file/dir permission management from codebase
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-10-16 13:17:28 -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 829cf76a89
Issue #4954 - Expose header size/length from HttpParser
- Minimal new API for exposing byte counts to HttpChannel.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-09-15 08:36:20 -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
Simone Bordet 51d0780041 Issue #5104 - AbstractProxyServlet include incorrect protocol version in Via header when accessed over H2.
Fixed HttpFields.computeField() removal loop.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-08-13 18:23:26 +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 c3598e814b Merged branch 'jetty-9.4.x-5104-incorrect_via_header-2' into 'jetty-9.4.x-5104-incorrect_via_header'. 2020-08-13 11:33:50 +02:00
Greg Wilkins a933b1645c simplified loops
unmodifiable found list

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-08-13 11:27:37 +02:00
Greg Wilkins f31604cff2 added test. Fixed bugs
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-08-13 11:17:19 +02:00
Simone Bordet faea7c9ac1 Fixes #5104 - AbstractProxyServlet include incorrect protocol version in Via header when accessed over H2.
Fixed javadocs.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-08-13 11:05:38 +02:00
Greg Wilkins f1a13521df improved implementation
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-08-13 10:06:31 +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
Jan Bartel 49615156f9 Fix blank line in import. 2020-06-29 10:39:58 +02: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 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
Ludovic Orban e43c98f08d Signed-off-by: Ludovic Orban <lorban@bitronix.be> 2020-06-03 17:58:01 +02:00
Ludovic Orban 6c62157865 Signed-off-by: Ludovic Orban <lorban@bitronix.be> 2020-06-03 16:30:26 +02:00
Ludovic Orban e0391a5ea8 replace LogicalDeclarationComparator with Comparator.comparing
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2020-05-20 17:06:17 +02:00
Joakim Erdfelt 5c2f00c1f5 Issue #4776 - Adding different length tests to WebSocketUriMappingTest
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-05-20 17:05:18 +02:00
Joakim Erdfelt 0234ead671 Issue #4776 - Making PathMappings._mappings use LogicalDeclaration sort
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2020-05-20 17:05:18 +02:00
Joakim Erdfelt 79e76544ff Issue #4776 - UriTemplatePathSpec sorting on simplified path spec.
+ Moved testcase to jetty-http (better place for it)
+ Introduced simplified path spec to aid in sorting
+ Made .getMatches(String) return sorted list by best match.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2020-05-20 17:05:18 +02:00
Ludovic Orban 85a5452f49 Issue #4877 - refactor PathSpec into an interface whose implementations use final fields
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2020-05-20 17:03:07 +02:00
Joakim Erdfelt d127db5186
Merge branch 'jetty-9.4.x-4860-NullHttpFields' of github.com:eclipse/jetty.project into jetty-9.4.x-4860-NullHttpFields 2020-05-11 17:26:05 -05:00
Joakim Erdfelt 4dc024b2b1
Issue #4860 - Fixing test comment
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-05-11 17:25:49 -05:00
Greg Wilkins 59a66158ed Issue #4860 NPE HttpFields
Fixes from review.
Fixed iterator overflow bug
clearer updates of size
better nonNull messages

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-05-11 22:09:19 +02:00