* Issue #1327 - Removing non-standard (Microsoft only) %uXXXX support
* Issue #1322 - Removing attempts at "solving" bad behavior in UrlEncoded
+ No longer captures NumberFormatException and Utf8Exception and
NotUtf8Exception for purposes of "recovering" from a bad encoding.
+ Introduces UrlEncode.decodeHexChar() and .decodeHexByte() to make
reporting of bad encoding more clear.
* Issue #1316 - throw a BadMessageException on bad parameter parsing
+ If BadMessageException is uncaught by the webapp, this will result
in an error 400 response message.
+ If an application decides to catch the BadMessageException, they can
choose to ignore the exception and do their own error reporting.
+ This piggybacks on Issue #1327 and Issue #1322
* Issue #1334 - throwing a ServletException if unable to commit the response
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
* Issue #1334 - using addSuppressed(ex) instead of MultiException
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Improved async handling to avoid race of setWriteListener->handle with async read callback.
The async read callback now calls into the HttpChannelState with a new onReadPossible() method.
A more detailed state machine is now kept for async reads, with and additional state for using
the handler thread to produce more content.
* Issue #1363
This is just some renaming withing HttpInput to improve it's understandability, plus a small
amount of refactoring for EOF handling.
This does not yet fix the deadlock, but is working towards better EOF handling so that state
can be pushed from HttpInput to HttpChannelState and avoid the need to query HttpInput state.
* Issue #1363Fixed#1363 deadlock by removing the call from HttpChannelState#unhandle to HttpInput This backed out the fix for #1317, which was fixed differently:
+ HttpChannelState#onReadEof now always sets _asyncReadPossible to true and _asyncRead to REGISTERED, so that the tests in both #handling and #unhandle will be true and return an Action.READ_CALLBACK
+ HttpInput#run now moves the state from AEOF to EOF if it directly consumes EOF from interceptedContent
+ HttpInput#run no longer calls onAllDataRead after a onDataAvailable, instead relying on the #onReadEof call to make #unhandle return Action.READ_CALLBACK
so that onAllDataRead is called on a subsequent execution of #run
Tidy up write side.
It cannot be the same as the read side as there is no registration for write interest. There is only write operations and the
callbacks associated with them.
Fixed by calling tryFillInterested() rather than fillInterested() to
cope with the race between reads scheduling read interest and
setWriteListener() that also executes code in
HttpChannelState.unhandle() that wants to schedule read interest.
+ Reverting change to HttpTester.parseResponse(Input)
+ Providing new HttpTester.parsePartialResponse(Input)
+ InsufficientBytes tests no longer assert content strings with invalid
characters (this was breaks the surefire report xml)
+ Reverting change to HttpTester.parseResponse(Input)
+ Providing new HttpTester.parsePartialResponse(Input)
+ InsufficientBytes tests no longer assert content strings with invalid
characters (this was breaks the surefire report xml)
+ Upgrading to jetty-test-helper 4.0
+ Removing use of org.eclipse.jetty.toolchain.test.SimpleRequest
+ Removing use of org.eclipse.jetty.toolchain.test.http.SimpleHttpParser
+ Removing use of org.eclipse.jetty.toolchain.test.http.SimpleHttpResponse
+ Updating long since deprecated (and now removed) known quirky methods
in jetty-test-helper and the test classes.
Implemented support in the generic HttpChannel and Request classes.
Linked HTTP/1.1 and HTTP/2 trailers to call HttpChannel, so that trailers
are now available in Servlet APIs by casting to Jetty's Request class.
The semantic is that trailers will only be available _after_ reading
the request content.