summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2008-12-23 16:15:37 +0000
committerRafael H. Schloming <rhs@apache.org>2008-12-23 16:15:37 +0000
commit3454246c968cb55b81c020de77b8eb34f51a249b (patch)
treed6a2d92faee07fd92b7bda77e21f3a59575f232a
parent5bb693dcf1459e2381f2309fc9ca74f6e30b8d03 (diff)
downloadqpid-python-3454246c968cb55b81c020de77b8eb34f51a249b.tar.gz
QPID-1547: ignore socket closed exceptions if shutdownInput is broken
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@729021 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java15
1 files changed, 12 insertions, 3 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java
index 5efd51d5db..351d8d24e8 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java
@@ -24,9 +24,10 @@ import org.apache.qpid.transport.Receiver;
import org.apache.qpid.transport.TransportException;
import org.apache.qpid.transport.util.Logger;
-import java.io.InputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.net.Socket;
+import java.net.SocketException;
import java.nio.ByteBuffer;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -46,6 +47,8 @@ final class IoReceiver extends Thread
private final Socket socket;
private final long timeout;
private final AtomicBoolean closed = new AtomicBoolean(false);
+ private final boolean shutdownBroken =
+ ((String) System.getProperties().get("os.name")).matches("(?i).*windows.*");
public IoReceiver(IoTransport transport, Receiver<ByteBuffer> receiver,
int bufferSize, long timeout)
@@ -67,7 +70,7 @@ final class IoReceiver extends Thread
{
try
{
- if (((String) System.getProperties().get("os.name")).matches("(?i).*windows.*"))
+ if (shutdownBroken)
{
socket.close();
}
@@ -125,7 +128,13 @@ final class IoReceiver extends Thread
}
catch (Throwable t)
{
- receiver.exception(t);
+ if (!(shutdownBroken &&
+ t instanceof SocketException &&
+ t.getMessage().equalsIgnoreCase("socket closed") &&
+ closed.get()))
+ {
+ receiver.exception(t);
+ }
}
finally
{