diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2008-08-01 14:11:46 +0000 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2008-08-01 14:11:46 +0000 |
| commit | 4a8ba28e2bcde906bf76f7f2fd760eb5d3676701 (patch) | |
| tree | 5cd8c7bbe426228deb15ffbedb0948d74789ea92 | |
| parent | 18e146b6c5ab50888ccc04c0ac609c4210e8ec1c (diff) | |
| download | lasso-4a8ba28e2bcde906bf76f7f2fd760eb5d3676701.tar.gz lasso-4a8ba28e2bcde906bf76f7f2fd760eb5d3676701.tar.xz lasso-4a8ba28e2bcde906bf76f7f2fd760eb5d3676701.zip | |
do not use normal add_assertion method when reconstructing a session, no need to add Advice to assertion_by_id container
| -rw-r--r-- | lasso/id-ff/session.c | 55 |
1 files changed, 33 insertions, 22 deletions
diff --git a/lasso/id-ff/session.c b/lasso/id-ff/session.c index cdb80266..1ca46377 100644 --- a/lasso/id-ff/session.c +++ b/lasso/id-ff/session.c @@ -52,6 +52,18 @@ /* public methods */ /*****************************************************************************/ +static gint +lasso_session_add_assertion_simple(LassoSession *session, const char *providerID, LassoNode *assertion) +{ + g_return_val_if_fail(LASSO_IS_SESSION(session), LASSO_PARAM_ERROR_INVALID_VALUE); + g_return_val_if_fail(providerID != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); + g_return_val_if_fail(assertion != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); + + g_hash_table_insert(session->assertions, g_strdup(providerID), g_object_ref(assertion)); + + return 0; +} + /** * lasso_session_add_assertion: * @session: a #LassoSession @@ -68,28 +80,27 @@ lasso_session_add_assertion(LassoSession *session, const char *providerID, Lasso { gint ret = 0; - g_return_val_if_fail(LASSO_IS_SESSION(session), LASSO_PARAM_ERROR_INVALID_VALUE); - g_return_val_if_fail(providerID != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); - g_return_val_if_fail(assertion != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); - - g_hash_table_insert(session->assertions, g_strdup(providerID), g_object_ref(assertion)); + ret = lasso_session_add_assertion_simple(session, providerID, assertion); + if (ret != 0) { + return ret; + } - /* ID-WSF specific need */ - if (LASSO_IS_SAML_ASSERTION(assertion)) { - LassoSamlAssertion *saml_assertion = LASSO_SAML_ASSERTION(assertion); - if (saml_assertion->Advice) { - LassoSamlAdvice *advice = saml_assertion->Advice; - GList *iter; - for (iter = advice->any; iter; iter = iter->next) { - xmlNode *node = (xmlNodePtr)iter->data; - if (xmlSecCheckNodeName(node, (xmlChar*)"Assertion", (xmlChar*)LASSO_SAML_ASSERTION_HREF)) { - xmlChar *id = xmlGetProp(node, (xmlChar*)"AssertionID"); - ret = lasso_session_add_assertion_with_id(session, (char*)id, node); - xmlFree(id); - } - } - } - } + /* ID-WSF specific need */ + if (LASSO_IS_SAML_ASSERTION(assertion)) { + LassoSamlAssertion *saml_assertion = LASSO_SAML_ASSERTION(assertion); + if (saml_assertion->Advice) { + LassoSamlAdvice *advice = saml_assertion->Advice; + GList *iter; + for (iter = advice->any; iter; iter = iter->next) { + xmlNode *node = (xmlNodePtr)iter->data; + if (xmlSecCheckNodeName(node, (xmlChar*)"Assertion", (xmlChar*)LASSO_SAML_ASSERTION_HREF)) { + xmlChar *id = xmlGetProp(node, (xmlChar*)"AssertionID"); + ret = lasso_session_add_assertion_with_id(session, (char*)id, node); + xmlFree(id); + } + } + } + } session->is_dirty = TRUE; @@ -639,7 +650,7 @@ init_from_xml(LassoNode *node, xmlNode *xmlnode) if ((value = xmlGetProp(t, (xmlChar*)"RemoteProviderID"))) { assertion = lasso_node_new_from_xmlNode(n); - lasso_session_add_assertion(session, (char*)value, assertion); + lasso_session_add_assertion_simple(session, (char*)value, assertion); xmlFree(value); } } else if ((value = xmlGetProp(t, (xmlChar*)"ID"))) { |
