summaryrefslogtreecommitdiff
path: root/qpid/java/common/src
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-08-11 09:58:55 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-08-11 09:58:55 +0000
commitdfd90b8f04e12f54a1232866cc3d51243a315f47 (patch)
tree159a696ebac0b08f46e09c9a86c0eb77fcef77a9 /qpid/java/common/src
parent9fa420417b5525c5ffc1cbde04113e8d12b4fb3a (diff)
downloadqpid-python-dfd90b8f04e12f54a1232866cc3d51243a315f47.tar.gz
QPID-5978 : [Java Client] deal with protocol initialisation failures such as unsupported versions, or attempting to connect to an HTTP port
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1617235 13f79535-47bb-0310-9956-ffa450edef68
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);
}
}