diff options
| author | Ted Ross <tross@apache.org> | 2011-01-11 19:24:14 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2011-01-11 19:24:14 +0000 |
| commit | 04290ff771075a5e275996a83d87d031a0884823 (patch) | |
| tree | a36c71bce7361eee05f5b3b6d9f287a2da0720a0 /qpid/cpp/src/qmf/AgentSession.cpp | |
| parent | 180f6554ab2755973026dfe6f47d94be9286da41 (diff) | |
| download | qpid-python-04290ff771075a5e275996a83d87d031a0884823.tar.gz | |
Added argument/type check for output arguments on methods.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1057814 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/qmf/AgentSession.cpp')
| -rw-r--r-- | qpid/cpp/src/qmf/AgentSession.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/qpid/cpp/src/qmf/AgentSession.cpp b/qpid/cpp/src/qmf/AgentSession.cpp index 3426167f87..d8600fc3c0 100644 --- a/qpid/cpp/src/qmf/AgentSession.cpp +++ b/qpid/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())); |
