Commit Graph

1104 Commits

Author SHA1 Message Date
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
Joakim Erdfelt 6ae75be9bc
Issue #4860 - Consistency to HttpFields API
If a null name (or HttpHeader or HttpField) is used
it should throw an ISE

+ .add() should remain consistent
+ .put() should remain consistent

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-05-11 10:34:52 -05:00
Joakim Erdfelt 90da10dac5
Issue #4860 - Improving testPreventNullField testcase
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-05-11 10:05:56 -05:00
Joakim Erdfelt 2c7c98f469
Eliminate warnings
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-05-11 10:03:12 -05:00
Greg Wilkins 1ac7fe4f9c Issue #4860 NPE from HttpFields
+ Fix bug with list iterator nextIndex
 + List iterator cannot inject null fields
 + minor cleanups

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-05-11 14:00:04 +02:00
Greg Wilkins 6af6af6419 Issue #4860 NPE from HttpFields
Improved test coverage

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-05-11 13:58:27 +02:00
Simone Bordet 2e85b3e169 Fixes #4764 - HTTP2 Jetty Server does not send back content-length.
Updates after review.
Now the Content-Length header is generated by HpackEncoder based on
MetaData.contentLength, so that the MetaData.HttpFields are not modified.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-04-14 11:44:58 +02:00
Greg Wilkins e913e7970f
Fixes #4542 Root pathspec mapping pathInfo (#4705)
* Fixes #4542 Root pathspec mapping pathInfo

For the "" root pathspec, the pathinfo should always be the full path and the matched path is ""

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

* updates from review

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-03-30 16:38:42 +02:00
Lachlan Roberts c658ae7056 Issue #4673 - fix MultiPart parsing for content split in boundary
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2020-03-18 11:22:40 +11:00
Simone Bordet 2958cb1d62
Merge pull request #4544 from eclipse/jetty-9.4.x-4541-OptimalLargeResponseHeader
Issue #4541 Large response header
2020-02-20 11:17:39 +01:00
Simone Bordet 01438e6f91 Code cleanup.
Changed the way the test directory was created: it was based on a
millisecond timestamp, but the tests run fast and it was possible that
two tests were creating the directory within the same millisecond.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-02-17 17:32:51 +01:00
Greg Wilkins f50c2654b9 Fixes #4541 Large Headers
Added a HEADER_OVERFLOW result as per review

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-02-06 21:17:58 +01:00
Greg Wilkins 1b59e42294 Issue #4541 Large response header
Fix #4541 by initially allocated a header buffer of `min(_config.getResponseHeaderSize(), _config.getOutputBufferSize())`
Only allocate a buffer of `getResponseHeaderSize` if an overflow results.

This should have no effect on the majority of responses where `getOutputBufferSize` is greater than `getResponseHeaderSize` other than the cost of a min operation.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2020-02-05 10:29:41 +01:00
Jan Bartel 9850c29839
Issue #4247 use context default for samesite cookie attribute (#4512)
* Issue #4247 use context default for samesite cookie attribute

Signed-off-by: Jan Bartel <janb@webtide.com>
2020-01-29 11:05:35 +01:00
Joakim Erdfelt eba24b6b83
Issue #4383 - Updates behavior to eliminate ISE
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-01-15 15:48:51 -06:00
Joakim Erdfelt 37f8503442
Issue #4383 - Minimal NPE prevention on MultiPart
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-01-15 15:31:43 -06:00
Joakim Erdfelt 8c65309963
Addressing Checkstyle violations in src/test/java
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2020-01-14 12:33:34 -06:00
Simone Bordet 923ec38adf Merged branch 'jetty-9.3.x' into 'jetty-9.4.x'. 2020-01-07 16:51:25 +01:00
Simone Bordet e3c8546667 Merged branch 'jetty-9.2.x' into 'jetty-9.3.x'. 2020-01-07 16:35:05 +01:00
Simone Bordet de890bb1b7 Happy New Year 2020.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2020-01-07 16:25:32 +01:00
olivier lamy e1371a1c13 happy new year
Signed-off-by: olivier lamy <oliver.lamy@gmail.com>
2020-01-02 21:54:05 +01:00
Joakim Erdfelt 36d06d016d
Issue #4415 - Addressing Gzip Decoding of large files
+ Addressing PR review

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-12-12 13:23:44 -06:00
Joakim Erdfelt 1e810d370f
Issue #4415 - Addressing Gzip Decoding of large files
+ Addressing PR review

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2019-12-12 11:58:44 -06:00