diff options
author | Ted Ross <tross@apache.org> | 2012-01-11 14:08:25 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2012-01-11 14:08:25 +0000 |
commit | 01f8f7e488d44323fff9550aeefddc38bb99e0ca (patch) | |
tree | d2f29f5b9754583facd11ec679fd08e1bdf38993 /cpp | |
parent | 43ce2f2731c8b501fb0ac536668a8245d44b986e (diff) | |
download | qpid-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.cpp | 34 | ||||
-rw-r--r-- | cpp/src/qmf/DataAddr.cpp | 2 |
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; |