From 3d25f71abf7538cbb2167248967ebb87c138baef Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Mon, 10 Feb 2014 09:33:50 +0000 Subject: QPID-5504 : allow for case where consumer target is closed before consumer is attached git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1566543 13f79535-47bb-0310-9956-ffa450edef68 --- .../qpid/server/protocol/v0_10/ConsumerTarget_0_10.java | 11 +++++++++-- .../apache/qpid/server/protocol/v0_8/ConsumerTarget_0_8.java | 12 ++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) (limited to 'qpid/java') diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java index 6ad9de22cb..114095bace 100644 --- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java +++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java @@ -107,7 +107,11 @@ public class ConsumerTarget_0_10 extends AbstractConsumerTarget implements FlowC boolean closed = false; State state = getState(); - getConsumer().getSendLock(); + final Consumer consumer = getConsumer(); + if(consumer != null) + { + consumer.getSendLock(); + } try { while(!closed && state != State.CLOSED) @@ -122,7 +126,10 @@ public class ConsumerTarget_0_10 extends AbstractConsumerTarget implements FlowC } finally { - getConsumer().releaseSendLock(); + if(consumer != null) + { + consumer.releaseSendLock(); + } } return closed; diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ConsumerTarget_0_8.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ConsumerTarget_0_8.java index cd71db15cd..0f0e49bf7f 100644 --- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ConsumerTarget_0_8.java +++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ConsumerTarget_0_8.java @@ -428,7 +428,12 @@ public abstract class ConsumerTarget_0_8 extends AbstractConsumerTarget implemen boolean closed = false; State state = getState(); - getConsumer().getSendLock(); + final Consumer consumer = getConsumer(); + + if(consumer != null) + { + consumer.getSendLock(); + } try { while(!closed && state != State.CLOSED) @@ -444,7 +449,10 @@ public abstract class ConsumerTarget_0_8 extends AbstractConsumerTarget implemen } finally { - getConsumer().releaseSendLock(); + if(consumer != null) + { + consumer.releaseSendLock(); + } } } -- cgit v1.2.1