summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-10-13 09:06:11 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-10-13 09:06:11 +0000
commit87a4900be441b172e92c4c7117ea4cabf0442195 (patch)
treeb67d269e80a3e8fa0ea13edd82f607c92552d92f
parent1e437d92f66da4ef0dffbfb85e9e66e5b4f4f980 (diff)
downloadqpid-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.java20
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;
}
});