You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by pm...@apache.org on 2014/10/23 14:20:36 UTC

svn commit: r1633798 - /qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Session.cpp

Author: pmoravec
Date: Thu Oct 23 12:20:35 2014
New Revision: 1633798

URL: http://svn.apache.org/r1633798
Log:
QPID-6182: AMQP 1.0 consumer should be able to get messages from browse-only queue

Modified:
    qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Session.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Session.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Session.cpp?rev=1633798&r1=1633797&r2=1633798&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Session.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Session.cpp Thu Oct 23 12:20:35 2014
@@ -464,7 +464,7 @@ void Session::setupOutgoing(pn_link_t* l
 
     if (node.queue) {
         authorise.outgoing(node.queue);
-        SubscriptionType type = pn_terminus_get_distribution_mode(source) == PN_DIST_MODE_COPY ? BROWSER : CONSUMER;
+        SubscriptionType type = (pn_terminus_get_distribution_mode(source) == PN_DIST_MODE_COPY) || (node.queue->isBrowseOnly()) ? BROWSER : CONSUMER;
         if (type == CONSUMER && node.queue->hasExclusiveOwner() && !node.queue->isExclusiveOwner(this)) {
             throw Exception(qpid::amqp::error_conditions::PRECONDITION_FAILED, std::string("Cannot consume from exclusive queue ") + node.queue->getName());
         }
@@ -472,6 +472,7 @@ void Session::setupOutgoing(pn_link_t* l
         q->init();
         filter.apply(q);
         outgoing[link] = q;
+        pn_terminus_set_distribution_mode(pn_link_source(link), type == BROWSER ? PN_DIST_MODE_COPY : PN_DIST_MODE_MOVE);
     } else if (node.exchange) {
         authorise.access(node.exchange);//do separate access check before trying to create the queue
         bool shared = is_capability_requested(SHARED, pn_terminus_capabilities(source));



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org