DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17323>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17323

Cancelled SSL connections cause Tomcat to stumble

           Summary: Cancelled SSL connections cause Tomcat to stumble
           Product: Tomcat 4
           Version: 4.1.18
          Platform: All
        OS/Version: Other
            Status: NEW
          Severity: Critical
          Priority: Other
         Component: Connector:Coyote HTTP/1.1
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


To reproduce the bug:

1) Configure an SSL connector: 

  In server.xml, uncomment the SSL connector element and set its
  minProcessors and maxProcessors attributes to small values, say 2.

2) Create any trivial web-application. This web-app should contain a
large file, for example a zipped archive file.

3) Using IE or Netscape, attempt to download the zipped file with
SSL. When prompted to open or save the file, cancel the request. This
will cause the following exception:

2003-02-23 17:44:50 StandardWrapperValve[default]: Servlet.service() for 
servlet default threw exception
java.net.SocketException: Connection reset by peer: socket write error
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at com.sun.net.ssl.internal.ssl.OutputRecord.a(DashoA6275)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
        at com.sun.net.ssl.internal.ssl.AppOutputStream.write(DashoA6275)
        at 
org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite
(InternalOutputBuffer.java:668)
        at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite
(IdentityOutputFilter.java:160)
        at org.apache.coyote.http11.InternalOutputBuffer.doWrite
(InternalOutputBuffer.java:523)
        at org.apache.coyote.Response.doWrite(Response.java:524)
        at org.apache.coyote.tomcat4.OutputBuffer.realWriteBytes
(OutputBuffer.java:384)
        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:360)
        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:338)
        at org.apache.coyote.tomcat4.OutputBuffer.writeBytes
(OutputBuffer.java:411)
        at org.apache.coyote.tomcat4.OutputBuffer.write(OutputBuffer.java:398)
        at org.apache.coyote.tomcat4.CoyoteOutputStream.write
(CoyoteOutputStream.java:110)
        at org.apache.catalina.servlets.DefaultServlet.copyRange
(DefaultServlet.java:1996)
        at org.apache.catalina.servlets.DefaultServlet.copy
(DefaultServlet.java:1745)
        at org.apache.catalina.servlets.DefaultServlet.serveResource
(DefaultServlet.java:1073)
        at org.apache.catalina.servlets.DefaultServlet.doGet
(DefaultServlet.java:506)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:247)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:193)
        at qos.user.IdFilter.doFilter(IdFilter.java:60)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:213)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:260)
        at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:191)
        at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:643)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke
(AuthenticatorBase.java:493)
        at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:641)
        at org.apache.catalina.valves.CertificatesValve.invoke
(CertificatesValve.java:246)
        at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:641)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContext.invoke
(StandardContext.java:2415)
        at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:180)
        at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:643)
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke
(ErrorDispatcherValve.java:170)
        at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:641)
        at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:172)
        at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:641)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:174)
        at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex
t(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.coyote.tomcat4.CoyoteAdapter.service
(CoyoteAdapter.java:223)
        at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:432)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnectio
n(Http11Protocol.java:386)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt
(PoolTcpEndpoint.java:534)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:530)
        at java.lang.Thread.run(Thread.java:536)

If you repeat step 3 several times, all connectors will become
disfunctional and Tomcat will eventually stop responding to HTTPS
requests.

The following bug can be reproduced on XP or Linux with JDK 1.4.1 and
Tomcat 4.1.18.

In addition, if your web-app uses log4j and struts 1.1x, and if you
place commons-logging and log4j.jar in WEB-INF/lib, then you will get
the following error in catalina.out (on top of the previous
java.net.SocketException):

Feb 23, 2003 5:44:46 PM org.apache.tomcat.util.log.CommonLogHandler log
SEVERE: Caught exception executing 
[EMAIL PROTECTED], terminating thread
org.apache.commons.logging.LogConfigurationException: 
org.apache.commons.logging.LogConfigurationException: 
org.apache.commons.logging.LogCo
nfigurationException: Class org.apache.commons.logging.impl.Log4JCategoryLog 
does not implement Log
        at org.apache.commons.logging.impl.LogFactoryImpl.newInstance
(LogFactoryImpl.java:555)
        at org.apache.commons.logging.impl.LogFactoryImpl.getInstance
(LogFactoryImpl.java:289)
        at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:409)
        at org.apache.tomcat.util.log.CommonLogHandler.log
(CommonLogHandler.java:97)
        at org.apache.tomcat.util.log.Log.log(Log.java:198)
        at org.apache.tomcat.util.log.Log.log(Log.java:192)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.log
(PoolTcpEndpoint.java:427)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt
(PoolTcpEndpoint.java:510)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:530)
        at java.lang.Thread.run(Thread.java:536)
Caused by: org.apache.commons.logging.LogConfigurationException: 
org.apache.commons.logging.LogConfigurationException: Class org.apache.comm
ons.logging.impl.Log4JCategoryLog does not implement Log
        at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor
(LogFactoryImpl.java:420)
        at org.apache.commons.logging.impl.LogFactoryImpl.newInstance
(LogFactoryImpl.java:548)
        ... 9 more
Caused by: org.apache.commons.logging.LogConfigurationException: Class 
org.apache.commons.logging.impl.Log4JCategoryLog does not implement L
og
        at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor
(LogFactoryImpl.java:416)
        ... 10 more
  

This makes the bug quite hard to identify, because the user who was
using log4j and commons-logging in lead to believe that the bug was in
"logging" where as the bug is in the connector *and* in the deployment
of commons-logging jar files:
TOMCAT_HOME/server/lib/commons-logging.ar
TOMCAT_HOME/commons/lib/commons-logging-api.jar
WEB-INF/lib/commons-logging.jar
WEB-INF/lib/log4j.jar.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to