Parent Directory | Revision Log
Sticky Revision: |
Better adherence to RFC2616 for content-length headers This is the fix for CVE-2013-4286.
Fix some issues with Servlet 3.1 non-blocking writes and APR identified by the 'unit' test.
Refactoring. Extract ByteBufferHolder into a separate class that can be used by HTTP and AJP.
Implement Servlet 3.1 non-blocking writes for AJP. Writes are fully non-blocking, both between and within AJP messages.
When using non-blocking IO need to ensure that end of stream is correctly identified so that the onAllDataRead event is correctly fired.
Add some plumbing with a view to supporting non-blocking writes.
Add a note to flush()
Calculate the maximum output chunk size when the processor is created. Since it won't change, there is no need to re-calculate it every time there is some output to write.
Add some plumbing for non-blocking writes to the AJP connectors. There is no functional change. All writes remain blocking.
Fix comment typo
When using Servlet 3.1 non-blocking reads with an AJP connector, make the reads between the AJP body messages from the server non-blocking. Once any part of a message is read, the remainder of the message will be read using blocking IO.
Pull up remaining actions and remove actionInternal() method that is no longer required.
More side-effects from making endpoints generic
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=55500 Ensure async timeout is applied when using Servlet 3.0 async with the AJP NIO connector.
Ensure that when multiple dispatches are requested (e.g. one for write and one for read) if the first calls AsyncContext.complete() that the second dispatch is not processed.
Enable AJP to work with Servlet 3.1 non-blocking reads. This is not a true non-blocking implementation. That requires further investigation marked by the TODOs in the code.
Researched the TODOs from the review of the AJP code against the list of actions.
Refactoring. Pull up readMessage()
Fix spacing
Refactoring. Pull up process method.
Fix Gump failure (hopefully) Move the log failure to the adapter so that the logging occurs before the request and response are recycled. This should improve the information that appears in the logs. The failure was caused because Gump runs with access logs enabled so when the failure occurred the context had been set to null. This meant the the default access logging kicked in which found the standard host level log and logged the issue there rather than in the context level TesterAccessLog.
Add a (current unused) method to set socket timeouts
Pull up receive
Correct the comment on the default timeout
Review action code usage across HTTP and AJP processors - remove the unused POST_REQUEST action - align ordering between AJP and HTTP for easier comparison - add missing actions to AJP for implementation / review (see TODOs) - document known NO-OPs for AJP - ensure trying to use comet over AJP triggers an error
Explicitly throw an exception if an HTTP upgrade is attempted on an AJP connection. This ensures the client receives a 500 response.
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=55453 Do not return a response body for those status codes and request methods that do not permit one.
Better comment
Content length is managed internally as a long. Fix a few places that were unnecessarily restricting it to an int.
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=55399 Have the message in the response line use the locale set for the response.
Remove the request.isAsyncOperation() method and the associated plumbing as res.getWriteListener() != null does the same thing with less code. Add a (currently unimplemented) dispatch() line from READ_WRITE_OP to the state diagram.
Rename ProtocolHandler to HttpUpgradeHandler
upgradeDispatch() needs socket status to differentiate between read and write
Switch the Processors to use the Servlet 3.1 upgrade objects - Upgrade process still broken
More updates to the async error handling triggered by kkolinko's review - simplify check to see if listeners changed async state during onTimeout - add option to control if onError fires during error handling (it doesn't if called from the timeout code since that has its own event) - add check to see if listeners changed state during onError - add check to see if state changed during "error dispatch" - remove AsyncState.ERROR as a valid start state for asyncPostProcess() - aligned the unit tests (one change) with the new behaviour Not tested with the TCK.
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54010 Remove some unnecessary code (duplicate calls to configure the scheme as https for AJP requests originally received over HTTPS).
Use the getter
Clean-up: final markers (UCDetector)
implement rev 1 of async/non blocking writes
Implement maxHeaderCount attribute on Connector. It is equivalent of LimitRequestFields directive of Apache HTTPD
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=52606 Ensure replayed POST bodies are available when using AJP
Refactor the connectors to allow lighter weight UpgradeProcessor implementations that do not depend on Http11Processors. The main change is the expansion of the Processor interface and the use of that interface rather than the AbstractProcessor.
Use a lighter weight processor for upgrades. Note that extending the Http11 processors is a hack that I think can be removed with some further refactoring of the connectors.
Initial web socket implementation with example. See code for TODOs.
Whitespace removal from /java/org/apache/coyote
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=51872 Ensure access log always logs the correct remote IP. Ensure requests with multiple errors do not result in multiple access log entries.
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=51698 Fix CVE-2011-3190 Prevent AJP request forgery via unread request body packet
Revert r1160772 & r1160774. These changes turned out to be unnecessary.
Add the ability to swallow input by specifying a null chunk
Add ability to track bytes read
Rename
Pull up refillReadBuffer()
Re-order. No functional change.
Pull up finish() so output() is used consistently to wrote closing message
Pull up flush() APR (like BIO and NIO) now writes each AJP packet to the socket as soon as it is ready
Pull up AJP SocketOutputBuffer
Rename since this message is used for response headers and response body
Organise code. No functional change.
Set "reuse" flag of final AJP "END_RESPONSE" packet to "0" if we plan to close the connection. mod_jk will respect it and I just committed the same to mod_proxy_ajp in httpd trunk. If the web server does not respect it, things do not get worse by nevertheless setting the flag, because the patch does not change whether we actually close the connection or not.
Pull up Handler.process
Align AJP and HTTP prior to pulling up Handler.process
Pull up Handler.process for the Ajp Connectors. Note that this is an intermediate step. The aim is to pull this up to AbstractProtocol
Fix regression in connector re-factoring that was too aggressive cleaning up AJP/BIO between requests triggering 400 entries in the access log
Fix indentation
Remove pointless code (see finally block just above)
Ensure an access log entry is made if an error occurs during asynchronous request processing and the socket is immediately closed.
Pull up getBody message
Pull up common code
Pull up more common code in Processor constructors
Pull up common endpoint code in Processor constructors
Start to pull up common code from constructors
Pull up definition of standard messages
Pull up asyncDispatch()
Pull up the request and response objects since they are common between AJP and HTTP
Pull up common getExecutor code
Create an AbstractProcessor. Start to pull common code from AJP and HTTP processors to this abstract class.
Refactor keepAliveTimeout to abstract AJP processor
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50887 Add support for configuring the JSSE provider used to convert client certificates. Based on a patch by pknopp.
New context attribute "swallowAbortedUploads" allows to make request data swallowing configurable for requests that are too large.
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50496 Differentiate between content written (what the app writes to the output stream) and bytes written (what Tomcat writes to the socket) and use bytes for the access logs
Coyote should not depend on Catalina
Avoid duplicate constant definition. Use Constants defined by the Servlet/JSP specs where appropriate Use Constants in preference to local Strings
Remove some unused code Fix some FindBugs niggles
Fix the root cause of the previous TCK failures (badly re-factored flush()) and restore the changes that were just working around the symptoms (poller stuff). Servlet 3.0 passes for the AJP/APR connector as of this commit.
Fix some of the remaining issues with the AJP/APR connector post async refactoring. Still does not pass the TCK.
Get AJP working after async refactoring. Some issues remain with AJP/APR connector which still has a handful of TCK failures.
Reduce code duplication in the APR connectors (prior to aligning with the Async refactoring)
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.
infrastructure at apache.org | ViewVC Help |
Powered by ViewVC 1.1.26 |