summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2006-11-15 16:41:55 +0000
committerFrederic Peters <fpeters@entrouvert.com>2006-11-15 16:41:55 +0000
commit0f11bb2491fd38e5b19484a6367e2d98452579a4 (patch)
treed533b2da248da2f13261c2a16d2e7f6c69e479a9
parent011bc4456936801ed9ca1a438bf6571e55246480 (diff)
fixed up lasso_saml20_logout_process_response_msg function name; and remove
assertion on SP when initiated on SP.
-rw-r--r--lasso/id-ff/logout.c2
-rw-r--r--lasso/saml-2.0/logout.c10
-rw-r--r--lasso/saml-2.0/logoutprivate.h2
3 files changed, 10 insertions, 4 deletions
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c
index 1857433e..3e43cae9 100644
--- a/lasso/id-ff/logout.c
+++ b/lasso/id-ff/logout.c
@@ -570,7 +570,7 @@ lasso_logout_process_response_msg(LassoLogout *logout, gchar *response_msg)
profile = LASSO_PROFILE(logout);
IF_SAML2(profile) {
- return lasso_saml20_process_response_msg(logout, response_msg);
+ return lasso_saml20_logout_process_response_msg(logout, response_msg);
}
/* before verify if profile->response is set */
diff --git a/lasso/saml-2.0/logout.c b/lasso/saml-2.0/logout.c
index 7f223ce3..5cfd2e2d 100644
--- a/lasso/saml-2.0/logout.c
+++ b/lasso/saml-2.0/logout.c
@@ -498,7 +498,7 @@ lasso_saml20_logout_build_response_msg(LassoLogout *logout)
}
int
-lasso_saml20_process_response_msg(LassoLogout *logout, const char *response_msg)
+lasso_saml20_logout_process_response_msg(LassoLogout *logout, const char *response_msg)
{
LassoProfile *profile = LASSO_PROFILE(logout);
LassoHttpMethod response_method;
@@ -578,7 +578,7 @@ lasso_saml20_process_response_msg(LassoLogout *logout, const char *response_msg)
/* if SOAP method or, if IDP provider type and HTTP Redirect,
* then remove assertion */
- if ( response_method == LASSO_HTTP_METHOD_SOAP ||
+ if (response_method == LASSO_HTTP_METHOD_SOAP ||
(remote_provider->role == LASSO_PROVIDER_ROLE_SP &&
response_method == LASSO_HTTP_METHOD_REDIRECT) ) {
lasso_session_remove_assertion(profile->session, profile->remote_providerID);
@@ -613,6 +613,12 @@ lasso_saml20_process_response_msg(LassoLogout *logout, const char *response_msg)
}
}
+ /* if at SP */
+ if (remote_provider->role == LASSO_PROVIDER_ROLE_IDP &&
+ response_method == LASSO_HTTP_METHOD_REDIRECT) {
+ lasso_session_remove_assertion(profile->session, profile->remote_providerID);
+ }
+
return rc;
}
diff --git a/lasso/saml-2.0/logoutprivate.h b/lasso/saml-2.0/logoutprivate.h
index afb5b05b..54ef1b41 100644
--- a/lasso/saml-2.0/logoutprivate.h
+++ b/lasso/saml-2.0/logoutprivate.h
@@ -42,7 +42,7 @@ int lasso_saml20_logout_validate_request(LassoLogout *logout);
int lasso_saml20_logout_build_response_msg(LassoLogout *logout);
-int lasso_saml20_process_response_msg(LassoLogout *logout, const char *response_msg);
+int lasso_saml20_logout_process_response_msg(LassoLogout *logout, const char *response_msg);
#ifdef __cplusplus
}