[shibboleth-sp2] 08/09: SSPCPP-671 - Handling of partial success in LogoutResponse needs work
Ferenc Wágner
wferi-guest at moszumanska.debian.org
Fri Mar 11 15:25:35 UTC 2016
This is an automated email from the git hooks/post-receive script.
wferi-guest pushed a commit to branch master
in repository shibboleth-sp2.
commit 65103184271b43bb6732c4994ae7503a44b7b3db
Author: Scott Cantor <cantor.2 at osu.edu>
Date: Fri Jan 29 13:43:04 2016 -0500
SSPCPP-671 - Handling of partial success in LogoutResponse needs work
https://issues.shibboleth.net/jira/browse/SSPCPP-671
Tweak final stage of response handling to always check relay state
and only use the templates if there is none.
---
shibsp/handler/impl/SAML2Logout.cpp | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/shibsp/handler/impl/SAML2Logout.cpp b/shibsp/handler/impl/SAML2Logout.cpp
index cde5cbb..c3318b5 100644
--- a/shibsp/handler/impl/SAML2Logout.cpp
+++ b/shibsp/handler/impl/SAML2Logout.cpp
@@ -587,20 +587,20 @@ pair<bool,long> SAML2Logout::doRequest(const Application& application, const HTT
}
// If relay state is set, recover the original return URL.
- if (!relayState.empty())
+ if (!relayState.empty()) {
recoverRelayState(application, request, response, relayState);
+ }
// Check for partial logout.
+ bool wasPartial = false;
const StatusCode* sc = logoutResponse->getStatus() ? logoutResponse->getStatus()->getStatusCode() : nullptr;
sc = sc ? sc->getStatusCode() : nullptr;
if (sc && XMLString::equals(sc->getValue(), StatusCode::PARTIAL_LOGOUT)) {
- if (logout_event)
- application.getServiceProvider().getTransactionLog()->write(*logout_event);
- return sendLogoutPage(application, request, response, "partial");
+ wasPartial = true;
}
if (logout_event) {
- logout_event->m_logoutType = LogoutEvent::LOGOUT_EVENT_GLOBAL;
+ logout_event->m_logoutType = wasPartial ? LogoutEvent::LOGOUT_EVENT_PARTIAL : LogoutEvent::LOGOUT_EVENT_GLOBAL;
application.getServiceProvider().getTransactionLog()->write(*logout_event);
}
@@ -610,7 +610,7 @@ pair<bool,long> SAML2Logout::doRequest(const Application& application, const HTT
}
// Return template for completion of logout.
- return sendLogoutPage(application, request, response, "global");
+ return sendLogoutPage(application, request, response, wasPartial ? "partial" : "global");
}
FatalProfileException ex("Incoming message was not a samlp:LogoutRequest or samlp:LogoutResponse.");
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-shibboleth/shibboleth-sp2.git
More information about the Pkg-shibboleth-devel
mailing list