summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-03-31 10:44:10 +0000
committerGordon Sim <gsim@apache.org>2008-03-31 10:44:10 +0000
commit01948b2ffb9a5618df319942f9bd21080fbe3cee (patch)
treee622df509b389ab33dd8bb9c529f973a58509b44 /qpid/cpp/src
parent5aece25f4521f4eea76a5e9250fcfd6a637beac1 (diff)
downloadqpid-python-01948b2ffb9a5618df319942f9bd21080fbe3cee.tar.gz
Prevent broker exit on receiving connection with invalid protocol version.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@642959 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/sys/AsynchIOAcceptor.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/qpid/cpp/src/qpid/sys/AsynchIOAcceptor.cpp b/qpid/cpp/src/qpid/sys/AsynchIOAcceptor.cpp
index f74541d29a..6502885ed0 100644
--- a/qpid/cpp/src/qpid/sys/AsynchIOAcceptor.cpp
+++ b/qpid/cpp/src/qpid/sys/AsynchIOAcceptor.cpp
@@ -27,6 +27,7 @@
#include "Thread.h"
#include "qpid/sys/ConnectionOutputHandler.h"
+#include "qpid/framing/AMQP_HighestVersion.h"
#include "qpid/framing/reply_exceptions.h"
#include "qpid/framing/ProtocolInitiation.h"
#include "qpid/log/Statement.h"
@@ -247,10 +248,11 @@ void AsynchIOHandler::readbuff(AsynchIO& , AsynchIO::BufferBase* buff) {
QPID_LOG(debug, "RECV [" << identifier << "] INIT(" << protocolInit << ")");
codec = factory->create(protocolInit.getVersion(), *this, identifier);
if (!codec) {
- // FIXME aconway 2008-03-18: send valid version header & close connection.
- // FIXME aconway 2008-03-18: exception type
- throw Exception(
- QPID_MSG("Protocol version not supported: " << protocolInit));
+ //TODO: may still want to revise this...
+ //send valid version header & close connection.
+ write(framing::ProtocolInitiation(framing::highestProtocolVersion));
+ readError = true;
+ aio->queueWriteClose();
}
}
}