You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2009/06/08 19:39:25 UTC

svn commit: r782712 - in /qpid/trunk/qpid/cpp/src: qpid/broker/Message.cpp tests/ClientSessionTest.cpp

Author: gsim
Date: Mon Jun  8 17:39:24 2009
New Revision: 782712

URL: http://svn.apache.org/viewvc?rev=782712&view=rev
Log:
If expiration is already set, don't alter it.


Modified:
    qpid/trunk/qpid/cpp/src/qpid/broker/Message.cpp
    qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Message.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Message.cpp?rev=782712&r1=782711&r2=782712&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Message.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Message.cpp Mon Jun  8 17:39:24 2009
@@ -326,8 +326,11 @@
     if (props->getTtl()) {
         // AMQP requires setting the expiration property to be posix
         // time_t in seconds. TTL is in milliseconds
-        time_t now = ::time(0);
-        props->setExpiration(now + (props->getTtl()/1000));
+        if (!props->getExpiration()) {
+            //only set expiration in delivery properties if not already set
+            time_t now = ::time(0);
+            props->setExpiration(now + (props->getTtl()/1000));
+        }
         // Use higher resolution time for the internal expiry calculation.
         expiration = AbsTime(AbsTime::now(), Duration(props->getTtl() * TIME_MSEC));
         setExpiryPolicy(e);

Modified: qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp?rev=782712&r1=782711&r2=782712&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp Mon Jun  8 17:39:24 2009
@@ -590,6 +590,20 @@
     BOOST_CHECK(!session.isValid());
 }
 
+QPID_AUTO_TEST_CASE(testExpirationNotAltered) {
+    ClientSessionFixture fix;
+    fix.session.queueDeclare(arg::queue="my-queue", arg::exclusive=true, arg::autoDelete=true);
+
+    Message m("my-message", "my-queue");        
+    m.getDeliveryProperties().setTtl(60000);
+    m.getDeliveryProperties().setExpiration(12345);
+    fix.session.messageTransfer(arg::content=m);
+    Message got;
+    BOOST_CHECK(fix.subs.get(got, "my-queue"));
+    BOOST_CHECK_EQUAL("my-message", got.getData());
+    BOOST_CHECK_EQUAL(12345u, got.getDeliveryProperties().getExpiration());
+}
+
 QPID_AUTO_TEST_SUITE_END()
 
 



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org