diff options
| author | Martin Ritchie <ritchiem@apache.org> | 2009-10-08 08:17:33 +0000 |
|---|---|---|
| committer | Martin Ritchie <ritchiem@apache.org> | 2009-10-08 08:17:33 +0000 |
| commit | c3f975ff714ab0077e9946c29556edc3ed5db476 (patch) | |
| tree | b1183df76defe3fae7db2acd2b26eb524357a1eb /java/broker | |
| parent | d5c872e6f0e840de21cb47f882f45c9412873061 (diff) | |
| download | qpid-python-c3f975ff714ab0077e9946c29556edc3ed5db476.tar.gz | |
QPID-1950 : Problem is that the thrown exception whilst an IOException does not signify that the socket has closed. So the broker had two open connections to send messages on. Change was to ensure that the previous Socket/IOSession has been closed before failover starts. Also added protected to ChannelOpenHandler to guard against out of order frames causing a NPE.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@823087 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker')
| -rw-r--r-- | java/broker/src/main/java/org/apache/qpid/server/handler/BasicRejectMethodHandler.java | 2 | ||||
| -rw-r--r-- | java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/handler/BasicRejectMethodHandler.java b/java/broker/src/main/java/org/apache/qpid/server/handler/BasicRejectMethodHandler.java index f3cab10ed7..fcf3fd4337 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/handler/BasicRejectMethodHandler.java +++ b/java/broker/src/main/java/org/apache/qpid/server/handler/BasicRejectMethodHandler.java @@ -71,7 +71,7 @@ public class BasicRejectMethodHandler implements StateAwareMethodListener<BasicR { _logger.warn("Dropping reject request as message is null for tag:" + deliveryTag); // throw evt.getMethod().getChannelException(AMQConstant.NOT_FOUND, "Delivery Tag(" + deliveryTag + ")not known"); - } + } else { if (message.isQueueDeleted()) diff --git a/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java b/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java index 5d7adc6371..9918013888 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java +++ b/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java @@ -54,6 +54,13 @@ public class ChannelOpenHandler implements StateAwareMethodListener<ChannelOpenB AMQProtocolSession session = stateManager.getProtocolSession(); VirtualHost virtualHost = session.getVirtualHost(); + + // Protect the broker against out of order frame request. + if (virtualHost == null) + { + throw new AMQException(AMQConstant.COMMAND_INVALID, "Virtualhost has not yet been set. ConnectionOpen has not been called.", null); + } + final AMQChannel channel = new AMQChannel(session,channelId, virtualHost.getMessageStore()); |
