Skip to content

Commit 085744f

Browse files
committed
Safety check that link is not NULL when processing pending delivery messages on session (AMQP 1.0)
Queue creation - don't update QMF until all validation done (Re-push)
1 parent 21a8667 commit 085744f

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

src/qpid/broker/Queue.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,15 @@ Queue::Queue(const string& _name, const QueueSettings& _settings,
214214
split(traceExclude, settings.traceExcludes, ", ");
215215
}
216216
qpid::amqp_0_10::translate(settings.asMap(), encodableSettings);
217+
218+
if ( settings.isBrowseOnly ) {
219+
QPID_LOG ( info, "Queue " << name << " is browse-only." );
220+
}
221+
if (settings.filter.size()) {
222+
selector.reset(new Selector(settings.filter));
223+
QPID_LOG (info, "Queue " << name << " using filter: " << settings.filter);
224+
}
225+
217226
if (parent != 0 && broker != 0) {
218227
ManagementAgent* agent = broker->getManagementAgent();
219228
if (agent != 0) {
@@ -227,13 +236,6 @@ Queue::Queue(const string& _name, const QueueSettings& _settings,
227236
}
228237
}
229238

230-
if ( settings.isBrowseOnly ) {
231-
QPID_LOG ( info, "Queue " << name << " is browse-only." );
232-
}
233-
if (settings.filter.size()) {
234-
selector.reset(new Selector(settings.filter));
235-
QPID_LOG (info, "Queue " << name << " using filter: " << settings.filter);
236-
}
237239
}
238240

239241
Queue::~Queue()

src/qpid/broker/amqp/Session.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,11 @@ bool Session::dispatch()
753753
completed.swap(copy);
754754
}
755755
for (std::deque<pn_delivery_t*>::iterator i = copy.begin(); i != copy.end(); ++i) {
756-
accepted(*i, true);
756+
if (pn_delivery_link(*i)) {
757+
accepted(*i, true);
758+
} else {
759+
QPID_LOG(warning, "Delivery to 'accept' has null link " << *i);
760+
}
757761
}
758762
}
759763
for (IncomingLinks::iterator i = incoming.begin(); i != incoming.end();) {

0 commit comments

Comments
 (0)