From 28d8d223a4803ab65feb06e4e120f8eec8b6ad75 Mon Sep 17 00:00:00 2001 From: "Rafael H. Schloming" Date: Tue, 23 Dec 2008 16:15:37 +0000 Subject: QPID-1547: ignore socket closed exceptions if shutdownInput is broken git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@729021 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/qpid/transport/network/io/IoReceiver.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'java/common/src/main') diff --git a/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java b/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java index 5efd51d5db..351d8d24e8 100644 --- a/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java +++ b/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 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 { -- cgit v1.2.1