From 0faf1c819535eefa3482c32b39dd8611d10b73ef Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Thu, 7 Nov 2013 08:50:31 +0000 Subject: QPID-5294 : Thread deadlock due to simultaneous calls to write and close on SSLSocket (JVM bug JDK-8022788) git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1539558 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java | 5 ++++- .../java/org/apache/qpid/amqp_1_0/framing/ConnectionHandler.java | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'qpid/java') diff --git a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java index 0d634c0f1a..6074f9b868 100644 --- a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java +++ b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java @@ -264,7 +264,10 @@ public class Connection implements SocketExceptionHandler { try { - s.close(); + synchronized (outputStream) + { + s.close(); + } } catch (IOException e) { diff --git a/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/framing/ConnectionHandler.java b/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/framing/ConnectionHandler.java index d4077e0f08..c155a52cd9 100644 --- a/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/framing/ConnectionHandler.java +++ b/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/framing/ConnectionHandler.java @@ -417,7 +417,10 @@ public class ConnectionHandler Binary bin = new Binary(buf.array(),buf.arrayOffset()+buf.position(), buf.limit()-buf.position()); RAW_LOGGER.fine("SEND["+ _conn.getRemoteAddress() +"] : " + bin.toString()); } - _outputStream.write(buf.array(),buf.arrayOffset()+buf.position(), buf.limit()-buf.position()); + synchronized (_outputStream) + { + _outputStream.write(buf.array(),buf.arrayOffset()+buf.position(), buf.limit()-buf.position()); + } buf.position(buf.limit()); } catch (IOException e) -- cgit v1.2.1