diff options
Diffstat (limited to 'cpp/src/qpid/client/Channel.cpp')
-rw-r--r-- | cpp/src/qpid/client/Channel.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/cpp/src/qpid/client/Channel.cpp b/cpp/src/qpid/client/Channel.cpp index 8b7b7e1118..fbb2e0c6f8 100644 --- a/cpp/src/qpid/client/Channel.cpp +++ b/cpp/src/qpid/client/Channel.cpp @@ -187,13 +187,14 @@ bool Channel::get(Message& msg, const Queue& _queue, AckMode ackMode) { status.sync(); session.messageCancel(tag); - if (incoming.empty()) { - return false; - } else { - msg.populate(*(incoming.pop())); + FrameSet::shared_ptr p; + if (incoming.tryPop(p)) { + msg.populate(*p); if (ackMode == AUTO_ACK) msg.acknowledge(session, false, true); return true; } + else + return false; } void Channel::publish(Message& msg, const Exchange& exchange, @@ -263,7 +264,7 @@ void Channel::run() { QPID_LOG(warning, "Dropping unsupported message type: " << content->getMethod()); } } - } catch (const QueueClosed&) {} + } catch (const sys::QueueClosed&) {} } }} |