summaryrefslogtreecommitdiff
path: root/cpp/src/qmf/AgentSession.cpp
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2011-01-11 19:24:14 +0000
committerTed Ross <tross@apache.org>2011-01-11 19:24:14 +0000
commitf104c8de0e9d892f65dc99eafd3b657c3e98dc32 (patch)
tree5dbda057f472b7396ed650c518b7bf471df08d8e /cpp/src/qmf/AgentSession.cpp
parent68f0a6faee3ba7d359ea0e48229cda1faba1f421 (diff)
downloadqpid-python-f104c8de0e9d892f65dc99eafd3b657c3e98dc32.tar.gz
Added argument/type check for output arguments on methods.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1057814 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qmf/AgentSession.cpp')
-rw-r--r--cpp/src/qmf/AgentSession.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/cpp/src/qmf/AgentSession.cpp b/cpp/src/qmf/AgentSession.cpp
index 3426167f87..d8600fc3c0 100644
--- a/cpp/src/qmf/AgentSession.cpp
+++ b/cpp/src/qmf/AgentSession.cpp
@@ -650,16 +650,19 @@ void AgentSessionImpl::handleMethodRequest(const Variant::Map& content, const Me
return;
}
- if (DataImplAccess::get(iter->second).getSchema().isValid())
+ 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;
+ AgentEvent event(eventImpl.release());
+ raiseException(event, "Invalid argument: " + aIter->first);
+ return;
}
}
+ }
}
enqueueEvent(AgentEvent(eventImpl.release()));