summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2013-11-07 08:50:31 +0000
committerRobert Godfrey <rgodfrey@apache.org>2013-11-07 08:50:31 +0000
commit0faf1c819535eefa3482c32b39dd8611d10b73ef (patch)
treed81e49855c9b4d9a0d64184abb2b331622f4c049
parent7174b59dbbf8966d2e1cd1d962ba4d97b91eecf7 (diff)
downloadqpid-python-0faf1c819535eefa3482c32b39dd8611d10b73ef.tar.gz
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
-rw-r--r--qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java5
-rw-r--r--qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/framing/ConnectionHandler.java5
2 files changed, 8 insertions, 2 deletions
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)