[ https://issues.apache.org/jira/browse/QPID-7020?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pavel Moravec closed QPID-7020. ------------------------------- Assignee: Pavel Moravec > uint16 AMQP0-10 message properties decoded as uint8 > --------------------------------------------------- > > Key: QPID-7020 > URL: https://issues.apache.org/jira/browse/QPID-7020 > Project: Qpid > Issue Type: Bug > Components: C++ Broker > Affects Versions: qpid-cpp-0.34 > Reporter: Pavel Moravec > Assignee: Pavel Moravec > Fix For: qpid-cpp-next > > > Description of problem: > MessageTransfer::processProperties has trivial typo in decoding uin16 message > property type as uint8 variant: > void MessageTransfer::processProperties(qpid::amqp::MapHandler& handler) const > { > .. > switch (v.getType()) { > case qpid::types::VAR_VOID: > handler.handleVoid(key); break; > case qpid::types::VAR_BOOL: > handler.handleBool(key, v); break; > case qpid::types::VAR_UINT8: > handler.handleUint8(key, v); break; > case qpid::types::VAR_UINT16: > handler.handleUint8(key, v); break; > .. > See the latest line. > Any attempt to call that line raises error: > invalid conversion: Cannot convert from uint16 to uint8 > (/builddir/build/BUILD/qpid-cpp-0.34/src/qpid/types/Variant.cpp:280) > One reproducer provided below. > Version-Release number of selected component (if applicable): > qpid-cpp-server-0.34-5.el6.x86_64 > How reproducible: > 100% > Steps to Reproduce: > 1. Have this trivial program that creates queue message_queue, subscribes to > the queue, bind to amq.match with x-match:any,number:10809 matcher rule: > $ cat send_uint16_t.cpp > #include <qpid/messaging/Connection.h> > #include <qpid/messaging/Message.h> > #include <qpid/messaging/Receiver.h> > #include <qpid/messaging/Sender.h> > #include <qpid/messaging/Session.h> > #include <cstdlib> > #include <iostream> > #include <sstream> > using namespace qpid::messaging; > using namespace qpid::types; > using std::stringstream; > using std::string; > int main(int argc, char** argv) { > const char* url = argc>1 ? argv[1] : "amqp:tcp:127.0.0.1:5672"; > > Connection connection(url, ""); > try { > connection.open(); > Session session = connection.createSession(); > Receiver receiver = session.createReceiver("message_queue; {create: > always, node:{type:queue, durable:false, x-bindings:[{exchange:'amq.match', > queue:'message_queue', key:'key', arguments:{x-match:any,number:10809}}]}}"); > Sender sender = session.createSender("amq.match/key"); > Message msg("Some content"); > uint16_t number=10809; > msg.setProperty("number", number); > sender.send(msg); > Message msg2 = receiver.fetch(); > std::cout << "Properties: " << msg2.getProperties() << std::endl > << "Content: " << msg.getContent() << std::endl; > session.close(); > connection.close(); > return 0; > } catch(const std::exception& error) { > std::cout << error.what() << std::endl; > connection.close(); > } > return 1; > } > 2. Compile it and run against a broker: > g++ -Wall -lqpidclient -lqpidcommon -lqpidmessaging -lqpidtypes > send_uint16_t.cpp -o send_uint16_t > ./send_uint16_t > 3. Check output and also qpid logs > Actual results: > output: > 2016-01-24 13:46:30 [Client] warning Broker closed connection: 501, invalid > conversion: Cannot convert from uint16 to uint8 > (/builddir/build/BUILD/qpid-cpp-0.34/src/qpid/types/Variant.cpp:280) > framing-error: invalid conversion: Cannot convert from uint16 to uint8 > (/builddir/build/BUILD/qpid-cpp-0.34/src/qpid/types/Variant.cpp:280) > qpid error: > 2016-01-24 13:46:30 [Broker] error Connection exception: framing-error: > invalid conversion: Cannot convert from uint16 to uint8 > (/builddir/build/BUILD/qpid-cpp-0.34/src/qpid/types/Variant.cpp:280) > 2016-01-24 13:46:30 [Protocol] error Connection > qpid.127.0.0.1:5672-127.0.0.1:33825 closed by error: invalid conversion: > Cannot convert from uint16 to uint8 > (/builddir/build/BUILD/qpid-cpp-0.34/src/qpid/types/Variant.cpp:280)(501) > Expected results: > output: > a message is received and printed to stdout > qpid logs: > no error -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org