Author: markt Date: Wed Mar 26 15:36:31 2014 New Revision: 1581889 URL: http://svn.apache.org/r1581889 Log: Locks should be outside try/finally
Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java?rev=1581889&r1=1581888&r2=1581889&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java Wed Mar 26 15:36:31 2014 @@ -623,8 +623,8 @@ public class InternalAprInputBuffer exte boolean readDone = false; int result = 0; + readLock.lock(); try { - readLock.lock(); if (wrapper.getBlockingStatus() == block) { result = Socket.recvbb(socket, 0, buf.length - lastValid); readDone = true; @@ -634,8 +634,8 @@ public class InternalAprInputBuffer exte } if (!readDone) { + writeLock.lock(); try { - writeLock.lock(); wrapper.setBlockingStatus(block); // Set the current settings for this socket if (block) { @@ -645,8 +645,8 @@ public class InternalAprInputBuffer exte Socket.timeoutSet(socket, 0); } // Downgrade the lock + readLock.lock(); try { - readLock.lock(); writeLock.unlock(); result = Socket.recvbb(socket, 0, buf.length - lastValid); } finally { Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java?rev=1581889&r1=1581888&r2=1581889&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java Wed Mar 26 15:36:31 2014 @@ -239,8 +239,8 @@ public class InternalAprOutputBuffer ext Lock readLock = wrapper.getBlockingStatusReadLock(); WriteLock writeLock = wrapper.getBlockingStatusWriteLock(); + readLock.lock(); try { - readLock.lock(); if (wrapper.getBlockingStatus() == block) { writeToSocket(); return; @@ -249,8 +249,8 @@ public class InternalAprOutputBuffer ext readLock.unlock(); } + writeLock.lock(); try { - writeLock.lock(); // Set the current settings for this socket wrapper.setBlockingStatus(block); if (block) { @@ -260,8 +260,8 @@ public class InternalAprOutputBuffer ext } // Downgrade the lock + readLock.lock(); try { - readLock.lock(); writeLock.unlock(); writeToSocket(); } finally { Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java?rev=1581889&r1=1581888&r2=1581889&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java Wed Mar 26 15:36:31 2014 @@ -141,7 +141,7 @@ public class InternalNioOutputBuffer ext do { if (socket.flush(true,selector,writeTimeout)) break; }while ( true ); - }finally { + } finally { if ( selector != null ) pool.put(selector); } if ( block || bytebuffer.remaining()==0) { Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java?rev=1581889&r1=1581888&r2=1581889&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java Wed Mar 26 15:36:31 2014 @@ -57,8 +57,8 @@ public class AprServletInputStream exten boolean readDone = false; int result = 0; + readLock.lock(); try { - readLock.lock(); if (wrapper.getBlockingStatus() == block) { result = Socket.recv(socket, b, off, len); readDone = true; @@ -68,14 +68,14 @@ public class AprServletInputStream exten } if (!readDone) { + writeLock.lock(); try { - writeLock.lock(); wrapper.setBlockingStatus(block); // Set the current settings for this socket Socket.optSet(socket, Socket.APR_SO_NONBLOCK, (block ? 0 : 1)); // Downgrade the lock + readLock.lock(); try { - readLock.lock(); writeLock.unlock(); result = Socket.recv(socket, b, off, len); } finally { Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java?rev=1581889&r1=1581888&r2=1581889&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java Wed Mar 26 15:36:31 2014 @@ -62,8 +62,8 @@ public class AprServletOutputStream exte Lock readLock = socketWrapper.getBlockingStatusReadLock(); WriteLock writeLock = socketWrapper.getBlockingStatusWriteLock(); + readLock.lock(); try { - readLock.lock(); if (socketWrapper.getBlockingStatus() == block) { return doWriteInternal(b, off, len); } @@ -71,8 +71,8 @@ public class AprServletOutputStream exte readLock.unlock(); } + writeLock.lock(); try { - writeLock.lock(); // Set the current settings for this socket socketWrapper.setBlockingStatus(block); if (block) { @@ -82,8 +82,8 @@ public class AprServletOutputStream exte } // Downgrade the lock + readLock.lock(); try { - readLock.lock(); writeLock.unlock(); return doWriteInternal(b, off, len); } finally { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org