summaryrefslogtreecommitdiff
path: root/qpid/java/amqp-1-0-client/src
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2013-11-21 11:31:30 +0000
committerRobert Godfrey <rgodfrey@apache.org>2013-11-21 11:31:30 +0000
commit5ea8ab45cbd0181bc1acef84f4f1932e21c096cf (patch)
tree14a24303b50540d463d74f2915ecb662e5d496bf /qpid/java/amqp-1-0-client/src
parent057b915ee553d3c2843d5178c226454b64d81ef0 (diff)
downloadqpid-python-5ea8ab45cbd0181bc1acef84f4f1932e21c096cf.tar.gz
QPID-5344 : Deadlock in JMS AMQP 1.0 client - patch from David Ingham
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1544129 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/amqp-1-0-client/src')
-rw-r--r--qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Session.java61
1 files changed, 32 insertions, 29 deletions
diff --git a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Session.java b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Session.java
index 5b9a67503b..ce1ce512a2 100644
--- a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Session.java
+++ b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Session.java
@@ -114,35 +114,38 @@ public class Session
}
- public synchronized SendingLinkEndpoint createSendingLinkEndpoint(final String linkName,
- final Target target,
- final Source source,
- AcknowledgeMode mode,
- Map<Binary, Outcome> unsettled,
- final DeliveryStateHandler deliveryStateHandler)
- {
- SendingLinkEndpoint link = this.getEndpoint().createSendingLinkEndpoint(linkName, source, target,
- unsettled, deliveryStateHandler);
-
- switch(mode)
- {
- case ALO:
- link.setSendingSettlementMode(SenderSettleMode.UNSETTLED);
- link.setReceivingSettlementMode(ReceiverSettleMode.FIRST);
- break;
- case AMO:
- link.setSendingSettlementMode(SenderSettleMode.SETTLED);
- break;
- case EO:
- link.setSendingSettlementMode(SenderSettleMode.UNSETTLED);
- link.setReceivingSettlementMode(ReceiverSettleMode.SECOND);
- break;
-
- }
-
- link.attach();
-
- return link;
+ public SendingLinkEndpoint createSendingLinkEndpoint(final String linkName,
+ final Target target,
+ final Source source,
+ AcknowledgeMode mode,
+ Map<Binary, Outcome> unsettled,
+ final DeliveryStateHandler deliveryStateHandler)
+ {
+ SessionEndpoint endpoint = this.getEndpoint();
+ synchronized(endpoint.getLock())
+ {
+ SendingLinkEndpoint link = endpoint.createSendingLinkEndpoint(linkName, source, target,
+ unsettled, deliveryStateHandler);
+
+ switch(mode)
+ {
+ case ALO:
+ link.setSendingSettlementMode(SenderSettleMode.UNSETTLED);
+ link.setReceivingSettlementMode(ReceiverSettleMode.FIRST);
+ break;
+ case AMO:
+ link.setSendingSettlementMode(SenderSettleMode.SETTLED);
+ break;
+ case EO:
+ link.setSendingSettlementMode(SenderSettleMode.UNSETTLED);
+ link.setReceivingSettlementMode(ReceiverSettleMode.SECOND);
+ break;
+
+ }
+
+ link.attach();
+ return link;
+ }
}
public Receiver createReceiver(final String sourceAddr) throws ConnectionErrorException