summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2012-01-11 14:08:25 +0000
committerTed Ross <tross@apache.org>2012-01-11 14:08:25 +0000
commit01f8f7e488d44323fff9550aeefddc38bb99e0ca (patch)
treed2f29f5b9754583facd11ec679fd08e1bdf38993 /cpp
parent43ce2f2731c8b501fb0ac536668a8245d44b986e (diff)
downloadqpid-python-01f8f7e488d44323fff9550aeefddc38bb99e0ca.tar.gz
QPID-3748 - Methods cannot be invoked when the agent is in external-storage mode
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1230050 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/qmf/AgentSession.cpp34
-rw-r--r--cpp/src/qmf/DataAddr.cpp2
2 files changed, 19 insertions, 17 deletions
diff --git a/cpp/src/qmf/AgentSession.cpp b/cpp/src/qmf/AgentSession.cpp
index 251c25fd44..3b5806aea4 100644
--- a/cpp/src/qmf/AgentSession.cpp
+++ b/cpp/src/qmf/AgentSession.cpp
@@ -620,23 +620,25 @@ void AgentSessionImpl::handleMethodRequest(const Variant::Map& content, const Me
if (iter != content.end()) {
DataAddr addr(new DataAddrImpl(iter->second.asMap()));
eventImpl->setDataAddr(addr);
- DataIndex::const_iterator iter(globalIndex.find(addr));
- if (iter == globalIndex.end()) {
- AgentEvent event(eventImpl.release());
- raiseException(event, "No data object found with the specified address");
- return;
- }
+ if (!externalStorage) {
+ DataIndex::const_iterator iter(globalIndex.find(addr));
+ if (iter == globalIndex.end()) {
+ AgentEvent event(eventImpl.release());
+ raiseException(event, "No data object found with the specified address");
+ return;
+ }
- const Schema& schema(DataImplAccess::get(iter->second).getSchema());
- if (schema.isValid()) {
- eventImpl->setSchema(schema);
- for (Variant::Map::const_iterator aIter = eventImpl->getArguments().begin();
- aIter != eventImpl->getArguments().end(); aIter++) {
- const Schema& schema(DataImplAccess::get(iter->second).getSchema());
- if (!SchemaImplAccess::get(schema).isValidMethodInArg(eventImpl->getMethodName(), aIter->first, aIter->second)) {
- AgentEvent event(eventImpl.release());
- raiseException(event, "Invalid argument: " + aIter->first);
- return;
+ const Schema& schema(DataImplAccess::get(iter->second).getSchema());
+ if (schema.isValid()) {
+ eventImpl->setSchema(schema);
+ for (Variant::Map::const_iterator aIter = eventImpl->getArguments().begin();
+ aIter != eventImpl->getArguments().end(); aIter++) {
+ const Schema& schema(DataImplAccess::get(iter->second).getSchema());
+ if (!SchemaImplAccess::get(schema).isValidMethodInArg(eventImpl->getMethodName(), aIter->first, aIter->second)) {
+ AgentEvent event(eventImpl.release());
+ raiseException(event, "Invalid argument: " + aIter->first);
+ return;
+ }
}
}
}
diff --git a/cpp/src/qmf/DataAddr.cpp b/cpp/src/qmf/DataAddr.cpp
index d16e12062e..08b64d5b5d 100644
--- a/cpp/src/qmf/DataAddr.cpp
+++ b/cpp/src/qmf/DataAddr.cpp
@@ -66,7 +66,7 @@ bool DataAddrImpl::operator<(const DataAddrImpl& other) const
}
-DataAddrImpl::DataAddrImpl(const Variant::Map& map)
+DataAddrImpl::DataAddrImpl(const Variant::Map& map) : agentEpoch(0)
{
Variant::Map::const_iterator iter;