summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-05-29 11:45:29 +0000
committerGordon Sim <gsim@apache.org>2008-05-29 11:45:29 +0000
commite4aefee4b6a80f92e5b67f78334833f0c3b3b4e5 (patch)
treeb1e53aff1b7dd612131c659e7d39301a3c99f935
parent1d61a8fd858901fd9b78b8393a6619ec6d09bae2 (diff)
downloadqpid-python-e4aefee4b6a80f92e5b67f78334833f0c3b3b4e5.tar.gz
Only record frames for replay if timeout is non-zero.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@661302 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--cpp/src/qpid/SessionState.cpp4
-rw-r--r--cpp/src/tests/SessionState.cpp4
2 files changed, 6 insertions, 2 deletions
diff --git a/cpp/src/qpid/SessionState.cpp b/cpp/src/qpid/SessionState.cpp
index 28e433b911..4b4e79801f 100644
--- a/cpp/src/qpid/SessionState.cpp
+++ b/cpp/src/qpid/SessionState.cpp
@@ -110,13 +110,13 @@ void SessionState::senderRecord(const AMQFrame& f) {
if (isControl(f)) return; // Ignore control frames.
QPID_LOG_IF(debug, f.getMethod(), getId() << ": sent cmd " << sender.sendPoint.command << ": " << *f.getMethod());
stateful = true;
- sender.replayList.push_back(f);
+ if (timeout) sender.replayList.push_back(f);
sender.unflushedSize += f.size();
sender.replaySize += f.size();
sender.incomplete += sender.sendPoint.command;
sender.sendPoint.advance(f);
if (config.replayHardLimit && config.replayHardLimit < sender.replaySize)
- throw ResourceLimitExceededException("Replay bufffer exceeeded hard limit");
+ throw ResourceLimitExceededException("Replay buffer exceeeded hard limit");
}
bool SessionState::senderNeedFlush() const {
diff --git a/cpp/src/tests/SessionState.cpp b/cpp/src/tests/SessionState.cpp
index 43b949cfff..51259bac2b 100644
--- a/cpp/src/tests/SessionState.cpp
+++ b/cpp/src/tests/SessionState.cpp
@@ -127,6 +127,7 @@ using qpid::SessionPoint;
QPID_AUTO_TEST_CASE(testSendGetReplyList) {
qpid::SessionState s;
+ s.setTimeout(1);
s.senderGetCommandPoint();
transfer1(s, "abc");
transfers(s, "def");
@@ -142,6 +143,7 @@ QPID_AUTO_TEST_CASE(testNeedFlush) {
// sync after 2 1-byte transfers or equivalent bytes.
c.replayFlushLimit = 2*(transferFrameSize()+contentFrameSize());
qpid::SessionState s(SessionId(), c);
+ s.setTimeout(1);
s.senderGetCommandPoint();
transfers(s, "a");
BOOST_CHECK(!s.senderNeedFlush());
@@ -161,6 +163,7 @@ QPID_AUTO_TEST_CASE(testPeerConfirmed) {
// sync after 2 1-byte transfers or equivalent bytes.
c.replayFlushLimit = 2*(transferFrameSize()+contentFrameSize());
qpid::SessionState s(SessionId(), c);
+ s.setTimeout(1);
s.senderGetCommandPoint();
transfers(s, "ab");
BOOST_CHECK(s.senderNeedFlush());
@@ -191,6 +194,7 @@ QPID_AUTO_TEST_CASE(testPeerConfirmed) {
QPID_AUTO_TEST_CASE(testPeerCompleted) {
qpid::SessionState s;
+ s.setTimeout(1);
s.senderGetCommandPoint();
// Completion implies confirmation
transfers(s, "abc");