diff options
Diffstat (limited to 'qpid/cpp/src/qpid/broker/amqp/DataReader.cpp')
-rw-r--r-- | qpid/cpp/src/qpid/broker/amqp/DataReader.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/qpid/cpp/src/qpid/broker/amqp/DataReader.cpp b/qpid/cpp/src/qpid/broker/amqp/DataReader.cpp index 1140032174..957134d0e6 100644 --- a/qpid/cpp/src/qpid/broker/amqp/DataReader.cpp +++ b/qpid/cpp/src/qpid/broker/amqp/DataReader.cpp @@ -160,13 +160,15 @@ void DataReader::readArray(pn_data_t* /*data*/, const qpid::amqp::Descriptor* /* void DataReader::readList(pn_data_t* data, const qpid::amqp::Descriptor* descriptor) { size_t count = pn_data_get_list(data); - reader.onStartList(count, qpid::amqp::CharSequence(), descriptor); - pn_data_enter(data); - for (size_t i = 0; i < count && pn_data_next(data); ++i) { - read(data); + bool skip = reader.onStartList(count, qpid::amqp::CharSequence(), descriptor); + if (!skip) { + pn_data_enter(data); + for (size_t i = 0; i < count && pn_data_next(data); ++i) { + read(data); + } + pn_data_exit(data); + reader.onEndList(count, descriptor); } - pn_data_exit(data); - reader.onEndList(count, descriptor); } void DataReader::readMap(pn_data_t* data, const qpid::amqp::Descriptor* descriptor) |