diff options
author | Valery Febvre <vfebvre at easter-eggs.com> | 2004-08-05 01:10:23 +0000 |
---|---|---|
committer | Valery Febvre <vfebvre at easter-eggs.com> | 2004-08-05 01:10:23 +0000 |
commit | 33ebd74c07908e1365847fafd268c1e463e02a07 (patch) | |
tree | ca9b492c7951fc614a8db4b23f87ef8bf6f40bc1 /lasso/id-ff/identity.c | |
parent | 12c0f0c478af25ba0c1c2655ef943f91504b29f8 (diff) | |
download | lasso-33ebd74c07908e1365847fafd268c1e463e02a07.tar.gz lasso-33ebd74c07908e1365847fafd268c1e463e02a07.tar.xz lasso-33ebd74c07908e1365847fafd268c1e463e02a07.zip |
lasso_identity_get_federation() & lasso_identity_add_federation() methods
make now a copy of the federation object.
Diffstat (limited to 'lasso/id-ff/identity.c')
-rw-r--r-- | lasso/id-ff/identity.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/lasso/id-ff/identity.c b/lasso/id-ff/identity.c index 0d8fe12f..e700f1b1 100644 --- a/lasso/id-ff/identity.c +++ b/lasso/id-ff/identity.c @@ -80,18 +80,18 @@ lasso_identity_add_federation(LassoIdentity *identity, gboolean found = FALSE; int i; - g_return_val_if_fail(identity != NULL, -1); + g_return_val_if_fail(LASSO_IS_IDENTITY(identity), -1); g_return_val_if_fail(remote_providerID != NULL, -2); - g_return_val_if_fail(federation != NULL, -3); + g_return_val_if_fail(LASSO_IS_FEDERATION(federation), -3); /* add the remote provider id if not already saved */ - for(i = 0; i<identity->providerIDs->len; i++) { + for (i = 0; i<identity->providerIDs->len; i++) { if(xmlStrEqual(remote_providerID, g_ptr_array_index(identity->providerIDs, i))) { found = TRUE; break; } } - if(found == TRUE) { + if (found == TRUE) { debug("A federation existed already for this providerID, it was replaced by the new one.\n"); } else { @@ -99,7 +99,8 @@ lasso_identity_add_federation(LassoIdentity *identity, } /* add the federation, replace if one already exists */ - g_hash_table_insert(identity->federations, g_strdup(remote_providerID), federation); + g_hash_table_insert(identity->federations, g_strdup(remote_providerID), + lasso_federation_copy(federation)); identity->is_dirty = TRUE; @@ -185,10 +186,10 @@ lasso_identity_get_federation(LassoIdentity *identity, remote_providerID); if (federation == NULL) { debug("No Federation found with remote ProviderID = %s\n", remote_providerID); + return (NULL); } - /* FIXME: federation should be a copy (fix lasso_identity_add_federation too) */ - return(federation); + return(lasso_federation_copy(federation)); } gchar* @@ -198,7 +199,7 @@ lasso_identity_get_next_federation_remote_providerID(LassoIdentity *identity) g_return_val_if_fail(identity!=NULL, NULL); - if(identity->providerIDs->len == 0) { + if (identity->providerIDs->len == 0) { return(NULL); } @@ -221,14 +222,15 @@ lasso_identity_remove_federation(LassoIdentity *identity, federation = lasso_identity_get_federation(identity, remote_providerID); if (federation != NULL) { g_hash_table_remove(identity->federations, remote_providerID); + lasso_federation_destroy(federation); } else { debug("Failed to remove federation for remote Provider %s\n", remote_providerID); } /* remove the federation remote provider id */ - for(i = 0; i<identity->providerIDs->len; i++) { - if(xmlStrEqual(remote_providerID, g_ptr_array_index(identity->providerIDs, i))) { + for (i = 0; i<identity->providerIDs->len; i++) { + if (xmlStrEqual(remote_providerID, g_ptr_array_index(identity->providerIDs, i))) { debug("Remove federation of %s\n", remote_providerID); g_ptr_array_remove_index(identity->providerIDs, i); break; @@ -388,7 +390,7 @@ lasso_identity_new_from_dump(gchar *dump) federation_node = lasso_node_new_from_xmlNode(federation_xmlNode); remote_providerID = lasso_node_get_attr_value(federation_node, LASSO_FEDERATION_REMOTE_PROVIDERID_NODE, &err); - if(remote_providerID==NULL){ + if (remote_providerID == NULL) { message(G_LOG_LEVEL_WARNING, err->message); g_error_free(err); lasso_node_destroy(federation_node); @@ -466,6 +468,7 @@ lasso_identity_new_from_dump(gchar *dump) xmlFree(remote_providerID); lasso_node_destroy(federation_node); + lasso_federation_destroy(federation); } federation_xmlNode = federation_xmlNode->next; |