summaryrefslogtreecommitdiff
path: root/qpid/java/common/src
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/common/src')
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/codec/AMQDecoder.java13
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/AMQProtocolHeaderException.java11
2 files changed, 16 insertions, 8 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/codec/AMQDecoder.java b/qpid/java/common/src/main/java/org/apache/qpid/codec/AMQDecoder.java
index 3311401ad5..ebecb7b483 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/codec/AMQDecoder.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/codec/AMQDecoder.java
@@ -66,6 +66,8 @@ public class AMQDecoder
private AMQMethodBodyFactory _bodyFactory;
+ private boolean _firstRead = true;
+
private List<ByteArrayInputStream> _remainingBufs = new ArrayList<ByteArrayInputStream>();
/**
@@ -239,6 +241,17 @@ public class AMQDecoder
msg = new ByteArrayDataInput(buf.array(),buf.arrayOffset()+buf.position(), buf.remaining());
}
+ // If this is the first read then we may be getting a protocol initiation back if we tried to negotiate
+ // an unsupported version
+ if(_firstRead && buf.hasRemaining())
+ {
+ _firstRead = false;
+ if(!_expectProtocolInitiation && buf.get(buf.position()) > 8)
+ {
+ _expectProtocolInitiation = true;
+ }
+ }
+
boolean enoughData = true;
while (enoughData)
{
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQProtocolHeaderException.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQProtocolHeaderException.java
index b0c92d9aab..b55a48067d 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQProtocolHeaderException.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQProtocolHeaderException.java
@@ -20,17 +20,12 @@
*/
package org.apache.qpid.framing;
-import org.apache.qpid.AMQException;
+import org.apache.qpid.transport.TransportException;
-/**
- * AMQProtocolHeaderException indicates a format error in an AMQP frame header.
- * <p>
- * TODO Not an AMQP exception as no status code.
- */
-public class AMQProtocolHeaderException extends AMQException
+public class AMQProtocolHeaderException extends TransportException
{
public AMQProtocolHeaderException(String message, Throwable cause)
{
- super(null, message, cause);
+ super(message, cause);
}
}