summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2013-09-20 15:43:57 +0000
committerGordon Sim <gsim@apache.org>2013-09-20 15:43:57 +0000
commitebbfc33fdf739e8f6f7a70cec6e3e34c9c5b2fce (patch)
treef8618052179cae570fd6b18c9642de9746f3ab0c /qpid/cpp/src
parent2d711855fc6acd806e1ced1703051bb3594e3abe (diff)
downloadqpid-python-ebbfc33fdf739e8f6f7a70cec6e3e34c9c5b2fce.tar.gz
QPID-5149: truncate over large routing keys when translating from 1.0 to 0-10
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1525043 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/broker/amqp/Translation.cpp7
-rwxr-xr-xqpid/cpp/src/tests/interlink_tests.py3
2 files changed, 9 insertions, 1 deletions
diff --git a/qpid/cpp/src/qpid/broker/amqp/Translation.cpp b/qpid/cpp/src/qpid/broker/amqp/Translation.cpp
index cf85c1f05a..2f15ff6658 100644
--- a/qpid/cpp/src/qpid/broker/amqp/Translation.cpp
+++ b/qpid/cpp/src/qpid/broker/amqp/Translation.cpp
@@ -260,7 +260,12 @@ boost::intrusive_ptr<const qpid::broker::amqp_0_10::MessageTransfer> Translation
dp->setPriority(message->getPriority());
if (message->isPersistent()) dp->setDeliveryMode(2);
if (message->getRoutingKey().size()) {
- dp->setRoutingKey(message->getRoutingKey());
+ if (message->getRoutingKey().size() > std::numeric_limits<uint8_t>::max()) {
+ //have to truncate routing key as it is specified to be a str8
+ dp->setRoutingKey(message->getRoutingKey().substr(0,std::numeric_limits<uint8_t>::max()));
+ } else {
+ dp->setRoutingKey(message->getRoutingKey());
+ }
props->getApplicationHeaders().setString(SUBJECT_KEY, message->getRoutingKey());
}
diff --git a/qpid/cpp/src/tests/interlink_tests.py b/qpid/cpp/src/tests/interlink_tests.py
index 1724607533..608d4ac890 100755
--- a/qpid/cpp/src/tests/interlink_tests.py
+++ b/qpid/cpp/src/tests/interlink_tests.py
@@ -128,6 +128,9 @@ class AmqpBrokerTest(BrokerTest):
def test_translate2(self):
self.send_and_receive(send_config=Config(self.broker, version="amqp0-10"))
+ def test_translate_with_large_routingkey(self):
+ self.send_and_receive(send_config=Config(self.broker, address="amq.topic/a.%s" % ("x" * 256), version="amqp1.0"), recv_config=Config(self.broker, address="amq.topic/a.*", version="amqp0-10"), wait_for_receiver=True)
+
def send_and_receive_empty(self, send_config=None, recv_config=None):
sconfig = send_config or self.default_config
rconfig = recv_config or self.default_config