summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2008-08-01 14:11:46 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2008-08-01 14:11:46 +0000
commit4a8ba28e2bcde906bf76f7f2fd760eb5d3676701 (patch)
tree5cd8c7bbe426228deb15ffbedb0948d74789ea92
parent18e146b6c5ab50888ccc04c0ac609c4210e8ec1c (diff)
downloadlasso-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.c55
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"))) {