summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/qpid/broker/amqp/DataReader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/src/qpid/broker/amqp/DataReader.cpp')
-rw-r--r--qpid/cpp/src/qpid/broker/amqp/DataReader.cpp14
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)