diff options
author | Rafael H. Schloming <rhs@apache.org> | 2008-12-23 16:15:37 +0000 |
---|---|---|
committer | Rafael H. Schloming <rhs@apache.org> | 2008-12-23 16:15:37 +0000 |
commit | 3454246c968cb55b81c020de77b8eb34f51a249b (patch) | |
tree | d6a2d92faee07fd92b7bda77e21f3a59575f232a | |
parent | 5bb693dcf1459e2381f2309fc9ca74f6e30b8d03 (diff) | |
download | qpid-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.java | 15 |
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 { |