summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamien Laniel <dlaniel@entrouvert.com>2007-06-08 10:16:04 +0000
committerDamien Laniel <dlaniel@entrouvert.com>2007-06-08 10:16:04 +0000
commitdfd24887423eb98c50e50e5a4ad5e654d7932c71 (patch)
treefa6ab38e8d8f403c88ef97b59e828e1ab8e68651
parent71711d1862f5223a0a961591d322a4f2763113f5 (diff)
downloadlasso-dfd24887423eb98c50e50e5a4ad5e654d7932c71.tar.gz
lasso-dfd24887423eb98c50e50e5a4ad5e654d7932c71.tar.xz
lasso-dfd24887423eb98c50e50e5a4ad5e654d7932c71.zip
if a user hasn't been associated to a discovery metadata, give him a default disco epr
-rw-r--r--lasso/id-ff/server.c27
-rw-r--r--lasso/saml-2.0/login.c4
2 files changed, 21 insertions, 10 deletions
diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c
index 1a566d4e..08cbe657 100644
--- a/lasso/id-ff/server.c
+++ b/lasso/id-ff/server.c
@@ -162,18 +162,25 @@ lasso_server_get_svc_metadatas_with_id_and_type(LassoServer *server, GList *svcM
GList *j;
g_return_val_if_fail(LASSO_IS_SERVER(server), NULL);
- g_return_val_if_fail(svcMDIDs != NULL, NULL);
g_return_val_if_fail(service_type != NULL, NULL);
- for (i = g_list_first(svcMDIDs); i != NULL; i = g_list_next(i)) {
- svcMDID = (gchar *)(i->data);
- for (j = g_list_first(server->private_data->svc_metadatas); j != NULL;
- j = g_list_next(j)) {
- md = LASSO_IDWSF2_DISCO_SVC_METADATA(j->data);
- if (strcmp(svcMDID, md->svcMDID) == 0 && md->ServiceContext != NULL
- && strcmp(md->ServiceContext->ServiceType, service_type) == 0) {
-
- result = g_list_append(result, g_object_ref(md));
+ for (i = g_list_first(server->private_data->svc_metadatas); i != NULL;
+ i = g_list_next(i)) {
+ md = LASSO_IDWSF2_DISCO_SVC_METADATA(i->data);
+ if (md->ServiceContext == NULL
+ || strcmp(md->ServiceContext->ServiceType, service_type) != 0) {
+ continue;
+ }
+ if (svcMDIDs == NULL) {
+ /* If no svcMDID is given, return all the metadatas with given */
+ /* service type */
+ result = g_list_append(result, g_object_ref(md));
+ } else {
+ for (j = g_list_first(svcMDIDs); j != NULL; j = g_list_next(j)) {
+ svcMDID = (gchar *)(j->data);
+ if (strcmp(svcMDID, md->svcMDID) == 0) {
+ result = g_list_append(result, g_object_ref(md));
+ }
}
}
}
diff --git a/lasso/saml-2.0/login.c b/lasso/saml-2.0/login.c
index 51797ff2..21a79692 100644
--- a/lasso/saml-2.0/login.c
+++ b/lasso/saml-2.0/login.c
@@ -615,6 +615,10 @@ lasso_saml20_login_assertion_add_discovery(LassoLogin *login, LassoSaml2Assertio
svcMDs = lasso_server_get_svc_metadatas_with_id_and_type(LASSO_PROFILE(login)->server,
svcMDIDs, LASSO_IDWSF2_DISCO_HREF);
if (svcMDs == NULL) {
+ svcMDs = lasso_server_get_svc_metadatas_with_id_and_type(
+ LASSO_PROFILE(login)->server, NULL, LASSO_IDWSF2_DISCO_HREF);
+ }
+ if (svcMDs == NULL) {
return;
}