diff options
| author | Damien Laniel <dlaniel@entrouvert.com> | 2007-06-08 10:16:04 +0000 |
|---|---|---|
| committer | Damien Laniel <dlaniel@entrouvert.com> | 2007-06-08 10:16:04 +0000 |
| commit | dfd24887423eb98c50e50e5a4ad5e654d7932c71 (patch) | |
| tree | fa6ab38e8d8f403c88ef97b59e828e1ab8e68651 | |
| parent | 71711d1862f5223a0a961591d322a4f2763113f5 (diff) | |
| download | lasso-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.c | 27 | ||||
| -rw-r--r-- | lasso/saml-2.0/login.c | 4 |
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; } |
