Author: markt
Date: Thu Jan 17 15:02:19 2013
New Revision: 1434704
URL: http://svn.apache.org/viewvc?rev=1434704&view=rev
Log:
Fix remaining Autobahn test failures with APR/native.
Once a close message has been received do not process any more messages from
that connection.
Modified:
tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java
tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java
tomcat/trunk/java/org/apache/coyote/http11/upgrade/LocalStrings.properties
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=1434704&r1=1434703&r2=1434704&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java
(original)
+++
tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java
Thu Jan 17 15:02:19 2013
@@ -32,6 +32,7 @@ public class AprServletInputStream exten
private final Lock blockingStatusReadLock;
private final WriteLock blockingStatusWriteLock;
private volatile boolean eagain = false;
+ private volatile boolean closed = false;
public AprServletInputStream(SocketWrapper<Long> wrapper) {
@@ -52,6 +53,9 @@ public class AprServletInputStream exten
try {
blockingStatusReadLock.lock();
if (wrapper.getBlockingStatus() == block) {
+ if (closed) {
+ throw new IOException(sm.getString("apr.closed"));
+ }
result = Socket.recv(socket, b, off, len);
readDone = true;
}
@@ -69,6 +73,9 @@ public class AprServletInputStream exten
try {
blockingStatusReadLock.lock();
blockingStatusWriteLock.unlock();
+ if (closed) {
+ throw new IOException(sm.getString("apr.closed"));
+ }
result = Socket.recv(socket, b, off, len);
} finally {
blockingStatusReadLock.unlock();
@@ -103,7 +110,8 @@ public class AprServletInputStream exten
@Override
protected void doClose() throws IOException {
- // NO-OP
- // Let AbstractProcessor trigger the close
+ closed = true;
+ // AbstractProcessor needs to trigger the close as multiple closes for
+ // APR/native sockets will cause problems.
}
}
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=1434704&r1=1434703&r2=1434704&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java
(original)
+++
tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java
Thu Jan 17 15:02:19 2013
@@ -33,6 +33,7 @@ public class AprServletOutputStream exte
private final long socket;
private final Lock blockingStatusReadLock;
private final WriteLock blockingStatusWriteLock;
+ private volatile boolean closed = false;
public AprServletOutputStream(SocketWrapper<Long> wrapper,
AprEndpoint endpoint) {
@@ -54,6 +55,9 @@ public class AprServletOutputStream exte
try {
blockingStatusReadLock.lock();
if (wrapper.getBlockingStatus() == block) {
+ if (closed) {
+ throw new IOException(sm.getString("apr.closed"));
+ }
result = Socket.send(socket, b, off, len);
writeDone = true;
}
@@ -71,6 +75,9 @@ public class AprServletOutputStream exte
try {
blockingStatusReadLock.lock();
blockingStatusWriteLock.unlock();
+ if (closed) {
+ throw new IOException(sm.getString("apr.closed"));
+ }
result = Socket.send(socket, b, off, len);
} finally {
blockingStatusReadLock.unlock();
@@ -108,7 +115,8 @@ public class AprServletOutputStream exte
@Override
protected void doClose() throws IOException {
- // NO-OP
- // Let AbstractProcessor trigger the close
+ closed = true;
+ // AbstractProcessor needs to trigger the close as multiple closes for
+ // APR/native sockets will cause problems.
}
}
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=1434704&r1=1434703&r2=1434704&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/LocalStrings.properties
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/LocalStrings.properties
Thu Jan 17 15:02:19 2013
@@ -23,6 +23,7 @@ upgrade.sis.write.ise=It is illegal to c
apr.read.error=Unexpected error [{0}] reading data from the APR/native socket.
apr.write.error=Unexpected error [{0}] writing data to the APR/native socket.
+apr.closed=The socket associated with this connection has been closed.
nio.eof.error=Unexpected EOF read on the socket
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]