Author: markt Date: Thu Sep 19 11:07:28 2013 New Revision: 1524693 URL: http://svn.apache.org/r1524693 Log: Revert addition of closing flag on wrapper. A more robust solution is required.
Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/coyote/AbstractProtocol.java tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java Propchange: tomcat/tc7.0.x/trunk/ ------------------------------------------------------------------------------ Merged /tomcat/trunk:r1524683 Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/AbstractProtocol.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/AbstractProtocol.java?rev=1524693&r1=1524692&r2=1524693&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/coyote/AbstractProtocol.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/AbstractProtocol.java Thu Sep 19 11:07:28 2013 @@ -675,7 +675,6 @@ public abstract class AbstractProtocol i } else { // Connection closed. OK to recycle the processor. Upgrade // processors are not recycled. - wrapper.setClosing(true); connections.remove(socket); if (processor.isUpgrade()) { processor.getHttpUpgradeHandler().destroy(); Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java?rev=1524693&r1=1524692&r2=1524693&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java Thu Sep 19 11:07:28 2013 @@ -50,7 +50,7 @@ public class AprServletInputStream exten try { readLock.lock(); if (wrapper.getBlockingStatus() == block) { - if (closed || wrapper.isClosing()) { + if (closed) { throw new IOException(sm.getString("apr.closed")); } result = Socket.recv(socket, b, off, len); @@ -70,7 +70,7 @@ public class AprServletInputStream exten try { readLock.lock(); writeLock.unlock(); - if (closed || wrapper.isClosing()) { + if (closed) { throw new IOException(sm.getString("apr.closed")); } result = Socket.recv(socket, b, off, len); Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java?rev=1524693&r1=1524692&r2=1524693&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java Thu Sep 19 11:07:28 2013 @@ -60,7 +60,7 @@ public class AprServletOutputStream exte try { readLock.lock(); if (wrapper.getBlockingStatus() == block) { - if (closed || wrapper.isClosing()) { + if (closed) { throw new IOException(sm.getString("apr.closed")); } return doWriteInternal(b, off, len); @@ -83,7 +83,7 @@ public class AprServletOutputStream exte try { readLock.lock(); writeLock.unlock(); - if (closed || wrapper.isClosing()) { + if (closed) { throw new IOException(sm.getString("apr.closed")); } return doWriteInternal(b, off, len); Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java?rev=1524693&r1=1524692&r2=1524693&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java Thu Sep 19 11:07:28 2013 @@ -52,17 +52,6 @@ public class SocketWrapper<E> { */ private final Object writeThreadLock = new Object(); - /* - * Used to indicate that the socket is in the process of closing / has been - * closed. Once this flag has been set, no further reads or writes should - * take place. Its primary purpose is with upgraded connections where a - * socket may be in use in application code with no immediate way to signal - * that the socket is no longer valid. Checking this flag before any - * application triggered read or write will enable an IOException to be - * thrown. - */ - private boolean closing = false; - public SocketWrapper(E socket) { this.socket = socket; ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); @@ -100,13 +89,10 @@ public class SocketWrapper<E> { return blockingStatusWriteLock; } public Object getWriteThreadLock() { return writeThreadLock; } - public boolean isClosing() { return closing; } - public void setClosing(boolean closing) { this.closing = closing; } public void reset(E socket, long timeout) { async = false; blockingStatus = true; - closing = false; comet = false; error = false; keepAliveLeft = 100; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org