[cpp-sp COMMIT] in /branches/REL_2: plugins/TemplateAttributeResolver.cpp shibsp/attribute/resolver/impl/ChainingAttr...
noreply at shibboleth.net
noreply at shibboleth.net
Tue Apr 10 16:22:52 BST 2012
Author: scantor
Date: Tue Apr 10 16:22:52 2012
New Revision: 3615
URL: http://svn.shibboleth.net/view/cpp-sp?rev=3615&view=rev
Log:
Handle exceptions during chain resolution
Added:
branches/REL_2/plugins/TemplateAttributeResolver.cpp
Modified:
branches/REL_2/shibsp/attribute/resolver/impl/ChainingAttributeResolver.cpp
Modified: branches/REL_2/shibsp/attribute/resolver/impl/ChainingAttributeResolver.cpp
URL: http://svn.shibboleth.net/view/cpp-sp/branches/REL_2/shibsp/attribute/resolver/impl/ChainingAttributeResolver.cpp?rev=3615&r1=3614&r2=3615&view=diff
==============================================================================
--- branches/REL_2/shibsp/attribute/resolver/impl/ChainingAttributeResolver.cpp (original)
+++ branches/REL_2/shibsp/attribute/resolver/impl/ChainingAttributeResolver.cpp Tue Apr 10 16:22:52 2012
@@ -233,7 +233,7 @@
string t(XMLHelper::getAttrString(e, nullptr, _type));
if (!t.empty()) {
try {
- Category::getInstance(SHIBSP_LOGCAT".AttributeResolver.Chaining").info(
+ Category::getInstance(SHIBSP_LOGCAT".AttributeResolver."CHAINING_ATTRIBUTE_RESOLVER).info(
"building AttributeResolver of type (%s)...", t.c_str()
);
auto_ptr<AttributeResolver> np(conf.AttributeResolverManager.newPlugin(t.c_str(), e));
@@ -241,7 +241,7 @@
np.release();
}
catch (exception& ex) {
- Category::getInstance(SHIBSP_LOGCAT".AttributeResolver.Chaining").error(
+ Category::getInstance(SHIBSP_LOGCAT".AttributeResolver."CHAINING_ATTRIBUTE_RESOLVER).error(
"caught exception processing embedded AttributeResolver element: %s", ex.what()
);
}
@@ -254,23 +254,30 @@
{
ChainingContext& chain = dynamic_cast<ChainingContext&>(ctx);
for (ptr_vector<AttributeResolver>::iterator i = m_resolvers.begin(); i != m_resolvers.end(); ++i) {
- Locker locker(&(*i));
- scoped_ptr<ResolutionContext> context(
- chain.m_session ?
- i->createResolutionContext(chain.m_app, *chain.m_session) :
- i->createResolutionContext(
- chain.m_app, chain.m_request, chain.m_issuer, chain.m_protocol, chain.m_nameid, chain.m_authclass, chain.m_authdecl, &chain.m_tokens, &chain.m_attributes
- )
- );
-
- i->resolveAttributes(*context);
-
- chain.m_attributes.insert(chain.m_attributes.end(), context->getResolvedAttributes().begin(), context->getResolvedAttributes().end());
- chain.m_ownedAttributes.insert(chain.m_ownedAttributes.end(), context->getResolvedAttributes().begin(), context->getResolvedAttributes().end());
- context->getResolvedAttributes().clear();
-
- chain.m_tokens.insert(chain.m_tokens.end(), context->getResolvedAssertions().begin(), context->getResolvedAssertions().end());
- chain.m_ownedAssertions.insert(chain.m_ownedAssertions.end(), context->getResolvedAssertions().begin(), context->getResolvedAssertions().end());
- context->getResolvedAssertions().clear();
+ try {
+ Locker locker(&(*i));
+ scoped_ptr<ResolutionContext> context(
+ chain.m_session ?
+ i->createResolutionContext(chain.m_app, *chain.m_session) :
+ i->createResolutionContext(
+ chain.m_app, chain.m_request, chain.m_issuer, chain.m_protocol, chain.m_nameid, chain.m_authclass, chain.m_authdecl, &chain.m_tokens, &chain.m_attributes
+ )
+ );
+
+ i->resolveAttributes(*context);
+
+ chain.m_attributes.insert(chain.m_attributes.end(), context->getResolvedAttributes().begin(), context->getResolvedAttributes().end());
+ chain.m_ownedAttributes.insert(chain.m_ownedAttributes.end(), context->getResolvedAttributes().begin(), context->getResolvedAttributes().end());
+ context->getResolvedAttributes().clear();
+
+ chain.m_tokens.insert(chain.m_tokens.end(), context->getResolvedAssertions().begin(), context->getResolvedAssertions().end());
+ chain.m_ownedAssertions.insert(chain.m_ownedAssertions.end(), context->getResolvedAssertions().begin(), context->getResolvedAssertions().end());
+ context->getResolvedAssertions().clear();
+ }
+ catch (exception& ex) {
+ Category::getInstance(SHIBSP_LOGCAT".AttributeResolver."CHAINING_ATTRIBUTE_RESOLVER).error(
+ "caught exception applying AttributeResolver in chain: %s", ex.what()
+ );
+ }
}
}
More information about the commits
mailing list