From dfd90b8f04e12f54a1232866cc3d51243a315f47 Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Mon, 11 Aug 2014 09:58:55 +0000 Subject: 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 --- .../src/main/java/org/apache/qpid/codec/AMQDecoder.java | 13 +++++++++++++ .../org/apache/qpid/framing/AMQProtocolHeaderException.java | 11 +++-------- 2 files changed, 16 insertions(+), 8 deletions(-) (limited to 'qpid/java/common/src') 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 _remainingBufs = new ArrayList(); /** @@ -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. - *

- * 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); } } -- cgit v1.2.1