summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2004-09-03 16:25:00 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2004-09-03 16:25:00 +0000
commit595d9b2987127e19256446b211e581818d61cd09 (patch)
treedaf7407f88dd339e1d449a4f93555cdca0370f52
parent1e05cd748c841830bc6a7d7509b42fa81864cd1e (diff)
Updated of lasso_logout_validate_request() : now it returns a code error of -301 (unsupported profile) if an IDP receiving a LogoutRequest via SOAP detects other SPs dont support SOAP method.
-rw-r--r--lasso/id-ff/logout.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c
index 897f25b1..483d8fee 100644
--- a/lasso/id-ff/logout.c
+++ b/lasso/id-ff/logout.c
@@ -760,9 +760,12 @@ lasso_logout_process_response_msg(LassoLogout *logout,
/* set the msg_relayState */
profile->msg_relayState = lasso_node_get_child_content(profile->response, "RelayState", lassoLibHRef, NULL);
- /* Only if SOAP method, then remove assertion */
+ /* Only if SOAP method or, if IDP provider type and HTTP Redirect, then remove assertion */
if ( (response_method == lassoHttpMethodSoap) || (profile->provider_type == lassoProviderTypeIdp && response_method == lassoHttpMethodRedirect) ) {
- lasso_session_remove_assertion(profile->session, profile->remote_providerID);
+ ret = lasso_session_remove_assertion(profile->session, profile->remote_providerID);
+ if (ret < 0) {
+ goto done;
+ }
if (profile->provider_type == lassoProviderTypeIdp && logout->providerID_index > 0) {
logout->providerID_index--;
}
@@ -980,7 +983,7 @@ lasso_logout_validate_request(LassoLogout *logout)
if (all_http_soap==FALSE) {
statusCode_class->set_prop(statusCode, "Value", lassoLibStatusCodeUnsupportedProfile);
- ret = -1;
+ ret = LASSO_LOGOUT_ERROR_UNSUPPORTED_PROFILE;
goto done;
}
}