diff options
author | Robert Godfrey <rgodfrey@apache.org> | 2014-10-13 09:06:11 +0000 |
---|---|---|
committer | Robert Godfrey <rgodfrey@apache.org> | 2014-10-13 09:06:11 +0000 |
commit | 87a4900be441b172e92c4c7117ea4cabf0442195 (patch) | |
tree | b67d269e80a3e8fa0ea13edd82f607c92552d92f | |
parent | 1e437d92f66da4ef0dffbfb85e9e66e5b4f4f980 (diff) | |
download | qpid-python-87a4900be441b172e92c4c7117ea4cabf0442195.tar.gz |
Fix the invalid channel proxy case
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/QPID-6125-ProtocolRefactoring@1631320 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java b/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java index 3a4e780db6..abb68977ae 100644 --- a/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java +++ b/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java @@ -1108,12 +1108,11 @@ public class AMQProtocolEngine implements ServerProtocolEngine, { _logger.error("Exception caught in " + this + ", closing connection explicitly: " + throwable, throwable); - - ConnectionCloseBody closeBody = _methodRegistry.createConnectionCloseBody(200, + ConnectionCloseBody closeBody = _methodRegistry.createConnectionCloseBody(AMQConstant.INTERNAL_ERROR.getCode(), AMQShortString.validValueOf( throwable.getMessage()), - 0, - 0); + _currentClassId, + _currentMethodId); writeFrame(closeBody.generateFrame(0)); @@ -1790,8 +1789,17 @@ public class AMQProtocolEngine implements ServerProtocolEngine, public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable { - closeConnection(AMQConstant.CHANNEL_ERROR, "Unknown channel id: " + channelId, channelId); - + if(method.getName().startsWith("receive")) + { + closeConnection(AMQConstant.CHANNEL_ERROR, + "Unknown channel id: " + channelId, + channelId); + return null; + } + else if(method.getName().equals("ignoreAllButCloseOk")) + { + return false; + } return null; } }); |