summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2004-12-29 17:25:56 +0000
committerFrederic Peters <fpeters@entrouvert.com>2004-12-29 17:25:56 +0000
commit300b281a6df66390db742859a8f6b63db181835b (patch)
treef1b589c534f6b5568eebffb6be5b7a3691c73fa9
parent70801607cfa1c7e85cc0101844ce83f8e3bb93a6 (diff)
only set Status in session on failure
-rw-r--r--lasso/id-ff/login.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c
index f98becdf..d3229a68 100644
--- a/lasso/id-ff/login.c
+++ b/lasso/id-ff/login.c
@@ -512,10 +512,14 @@ lasso_login_build_artifact_msg(LassoLogin *login, lassoHttpMethod http_method)
xmlFree(b64_samlArt);
xmlFree(relayState);
- if (profile->session == NULL)
+ if (profile->session == NULL && strcmp(LASSO_SAMLP_RESPONSE(
+ profile->response)->Status->StatusCode->Value,
+ "samlp:Success") != 0) {
profile->session = lasso_session_new();
- lasso_session_add_status(profile->session, profile->remote_providerID,
- g_object_ref(LASSO_SAMLP_RESPONSE(profile->response)->Status));
+
+ lasso_session_add_status(profile->session, profile->remote_providerID,
+ g_object_ref(LASSO_SAMLP_RESPONSE(profile->response)->Status));
+ }
return ret;
}
@@ -748,6 +752,7 @@ lasso_login_build_response_msg(LassoLogin *login, gchar *remote_providerID)
g_object_ref(assertion);
lasso_profile_set_response_status(profile,
LASSO_SAML_STATUS_CODE_SUCCESS);
+ lasso_session_remove_status(profile->session, remote_providerID);
} else {
LassoSamlpStatus *status;
/* no assertion, get back status code */