You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2008/07/30 19:42:12 UTC

svn commit: r681139 - in /tomcat: container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/ container/tc5.5.x/webapps/docs/ current/tc5.5.x/

Author: markt
Date: Wed Jul 30 10:42:11 2008
New Revision: 681139

URL: http://svn.apache.org/viewvc?rev=681139&view=rev
Log:
Fix bug 44673. Throw IOE if stream is closed and a call is made to any read(), ready(), mark(), reset(), or skip() method as per javadocs for Reader.

Modified:
    tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/InputBuffer.java
    tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/LocalStrings.properties
    tomcat/container/tc5.5.x/webapps/docs/changelog.xml
    tomcat/current/tc5.5.x/STATUS.txt

Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/InputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/InputBuffer.java?rev=681139&r1=681138&r2=681139&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/InputBuffer.java (original)
+++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/InputBuffer.java Wed Jul 30 10:42:11 2008
@@ -25,6 +25,7 @@
 import java.util.HashMap;
 
 import org.apache.catalina.security.SecurityUtil;
+import org.apache.catalina.util.StringManager;
 import org.apache.coyote.Request;
 import org.apache.tomcat.util.buf.B2CConverter;
 import org.apache.tomcat.util.buf.ByteChunk;
@@ -43,6 +44,11 @@
     implements ByteChunk.ByteInputChannel, CharChunk.CharInputChannel,
                CharChunk.CharOutputChannel {
 
+    /**
+     * The string manager for this package.
+     */
+    protected static StringManager sm =
+        StringManager.getManager(Constants.Package);
 
     // -------------------------------------------------------------- Constants
 
@@ -270,12 +276,20 @@
 
     public int readByte()
         throws IOException {
+
+        if (closed)
+            throw new IOException(sm.getString("inputBuffer.streamClosed"));
+        
         return bb.substract();
     }
 
 
     public int read(byte[] b, int off, int len)
         throws IOException {
+
+        if (closed)
+            throw new IOException(sm.getString("inputBuffer.streamClosed"));
+        
         return bb.substract(b, off, len);
     }
 
@@ -330,18 +344,30 @@
 
     public int read()
         throws IOException {
+
+        if (closed)
+            throw new IOException(sm.getString("inputBuffer.streamClosed"));
+        
         return cb.substract();
     }
 
 
     public int read(char[] cbuf)
         throws IOException {
+
+        if (closed)
+            throw new IOException(sm.getString("inputBuffer.streamClosed"));
+        
         return read(cbuf, 0, cbuf.length);
     }
 
 
     public int read(char[] cbuf, int off, int len)
         throws IOException {
+
+        if (closed)
+            throw new IOException(sm.getString("inputBuffer.streamClosed"));
+        
         return cb.substract(cbuf, off, len);
     }
 
@@ -349,6 +375,10 @@
     public long skip(long n)
         throws IOException {
 
+
+        if (closed)
+            throw new IOException(sm.getString("inputBuffer.streamClosed"));
+        
         if (n < 0) {
             throw new IllegalArgumentException();
         }
@@ -380,6 +410,10 @@
 
     public boolean ready()
         throws IOException {
+
+        if (closed)
+            throw new IOException(sm.getString("inputBuffer.streamClosed"));
+        
         return (cb.getLength() > 0);
     }
 
@@ -391,6 +425,10 @@
 
     public void mark(int readAheadLimit)
         throws IOException {
+
+        if (closed)
+            throw new IOException(sm.getString("inputBuffer.streamClosed"));
+        
         if (cb.getLength() <= 0) {
             cb.setOffset(0);
             cb.setEnd(0);
@@ -414,6 +452,10 @@
 
     public void reset()
         throws IOException {
+
+        if (closed)
+            throw new IOException(sm.getString("inputBuffer.streamClosed"));
+        
         if (state == CHAR_STATE) {
             if (markPos < 0) {
                 cb.recycle();

Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/LocalStrings.properties?rev=681139&r1=681138&r2=681139&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/LocalStrings.properties (original)
+++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/LocalStrings.properties Wed Jul 30 10:42:11 2008
@@ -17,7 +17,6 @@
 #
 # CoyoteConnector
 #
-
 coyoteConnector.alreadyInitialized=The connector has already been initialized
 coyoteConnector.alreadyStarted=The connector has already been started
 coyoteConnector.cannotRegisterProtocol=Cannot register MBean for the Protocol
@@ -32,17 +31,14 @@
 coyoteConnector.MapperRegistration=register Mapper: {0}
 coyoteConnector.protocolUnregistrationFailed=Protocol handler stop failed
 
-
 #
 # CoyoteAdapter
 #
-
 coyoteAdapter.service=An exception or error occurred in the container during the request processing
 
 #
 # CoyoteResponse
 #
-
 coyoteResponse.getOutputStream.ise=getWriter() has already been called for this response
 coyoteResponse.getWriter.ise=getOutputStream() has already been called for this response
 coyoteResponse.resetBuffer.ise=Cannot reset buffer after response has been committed
@@ -53,7 +49,6 @@
 #
 # CoyoteRequest
 #
-
 coyoteRequest.getInputStream.ise=getReader() has already been called for this request
 coyoteRequest.getReader.ise=getInputStream() has already been called for this request
 coyoteRequest.sessionCreateCommitted=Cannot create a session after the response has been committed
@@ -76,5 +71,4 @@
 mapperListener.unregisterContext=Unregister Context {0}
 mapperListener.registerWrapper=Register Wrapper {0} in Context {1}
 
-
-
+inputBuffer.streamClosed=Stream closed

Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?rev=681139&r1=681138&r2=681139&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Wed Jul 30 10:42:11 2008
@@ -49,6 +49,11 @@
         Don't throw an ArrayIndexOutOfBoundsException when empty URL is
         requested. Patch provided by Charles R Caldarale. (markt)
       </fix>
+      <fix>
+        <bug>44673</bug>: Throw IOE if ServletInputStream is closed and a call
+        is made to any read(), ready(), mark(), reset(), or skip() method as per
+        javadocs for Reader. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Webapps">

Modified: tomcat/current/tc5.5.x/STATUS.txt
URL: http://svn.apache.org/viewvc/tomcat/current/tc5.5.x/STATUS.txt?rev=681139&r1=681138&r2=681139&view=diff
==============================================================================
--- tomcat/current/tc5.5.x/STATUS.txt (original)
+++ tomcat/current/tc5.5.x/STATUS.txt Wed Jul 30 10:42:11 2008
@@ -41,12 +41,6 @@
   +1: markt
   -1: fhanik - Rainer backported all the fixes, we should evaluate those, I'll add them at the bottom
 
-* Fix ServletInputStream still readable when closed
-  https://issues.apache.org/bugzilla/show_bug.cgi?id=44673
-  http://svn.apache.org/viewvc?rev=641076&view=rev
-  +1: markt, fhanik, yoavs
-  -1:
-
 * Fix CGI servlet for vista
   http://people.apache.org/~markt/patches/2008-03-28-cgi-env.patch
   +1: markt, fhanik, yoavs



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org