Author: markt
Date: Tue Feb 10 15:43:46 2015
New Revision: 1658734
URL: http://svn.apache.org/r1658734
Log:
Ensure that a dropped connection does not leave references to the
UpgradeProcessor
Modified:
tomcat/trunk/java/org/apache/coyote/http11/upgrade/LocalStrings.properties
tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeProcessor.java
Modified:
tomcat/trunk/java/org/apache/coyote/http11/upgrade/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/LocalStrings.properties?rev=1658734&r1=1658733&r2=1658734&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/LocalStrings.properties
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/LocalStrings.properties
Tue Feb 10 15:43:46 2015
@@ -14,6 +14,8 @@
# limitations under the License.
upgradeProcessor.isCloseFail=Failed to close input stream associated with
upgraded connection
+upgradeProcessor.onDataAvailableFail=Failed to process data available event
+upgradeProcessor.onWritePossibleFail=Failed to process write possible event
upgradeProcessor.osCloseFail=Failed to close output stream associated with
upgraded connection
upgrade.sis.isFinished.ise=It is illegal to call isFinished() when the
ServletInputStream is not in non-blocking mode (i.e. setReadListener() must be
called first)
Modified:
tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeProcessor.java?rev=1658734&r1=1658733&r2=1658734&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeProcessor.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeProcessor.java
Tue Feb 10 15:43:46 2015
@@ -98,10 +98,24 @@ public class UpgradeProcessor implements
@Override
public final SocketState upgradeDispatch(SocketStatus status) throws
IOException {
if (status == SocketStatus.OPEN_READ) {
- upgradeServletInputStream.onDataAvailable();
- upgradeServletOutputStream.checkWriteDispatch();
+ try {
+ upgradeServletInputStream.onDataAvailable();
+ upgradeServletOutputStream.checkWriteDispatch();
+ } catch (IOException ioe) {
+ // The error handling within the ServletInputStream should have
+ // marked the stream for closure which will get picked up
below,
+ // triggering the clean-up of this processor.
+
log.debug(sm.getString("upgradeProcessor.onDataAvailableFail"), ioe);
+ }
} else if (status == SocketStatus.OPEN_WRITE) {
- upgradeServletOutputStream.onWritePossible();
+ try {
+ upgradeServletOutputStream.onWritePossible();
+ } catch (IOException ioe) {
+ // The error handling within the ServletOutputStream should
have
+ // marked the stream for closure which will get picked up
below,
+ // triggering the clean-up of this processor.
+
log.debug(sm.getString("upgradeProcessor.onWritePossibleFail"), ioe);
+ }
} else if (status == SocketStatus.STOP) {
try {
upgradeServletInputStream.close();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]