From d08d4a5795545d0b4905e283f585982aa4e99091 Mon Sep 17 00:00:00 2001
From: Olav Morken <olav.morken@uninett.no>
Date: Tue, 18 Dec 2007 13:09:51 +0000
Subject: [PATCH] SAML2:SP:SingleLogoutService - Handle logout request from IdP
 without a valid session.

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@127 44740490-163a-0410-bde0-09ae8108e29a
---
 www/saml2/sp/SingleLogoutService.php | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/www/saml2/sp/SingleLogoutService.php b/www/saml2/sp/SingleLogoutService.php
index 23d711b0b..dc0f4a977 100644
--- a/www/saml2/sp/SingleLogoutService.php
+++ b/www/saml2/sp/SingleLogoutService.php
@@ -17,9 +17,18 @@ $metadata = new SimpleSAML_XML_MetaDataStore($config);
 // Get the local session
 $session = SimpleSAML_Session::getInstance();
 
+/* Get the tracking id for this session if we have a valid session. Use an
+ * empty string if we don't have a valid session.
+ */
+if($session !== NULL) {
+	$trackId = $session->getTrackId();
+} else {
+	$trackId = '';
+}
+
 $logger = new SimpleSAML_Logger();
 
-$logger->log(LOG_INFO, $session->getTrackID(), 'SAML2.0', 'SP.SingleLogoutService', 'EVENT', 'Access', 
+$logger->log(LOG_INFO, $trackId, 'SAML2.0', 'SP.SingleLogoutService', 'EVENT', 'Access',
 	'Accessing SAML 2.0 SP endpoint SingleLogoutService');
 
 // Destroy local session if exists.
@@ -51,7 +60,7 @@ if (isset($_GET['SAMLRequest'])) {
 	$responder = $metadata->getMetaDataCurrentEntityID();
 	
 	
-	$logger->log(LOG_NOTICE, $session->getTrackID(), 'SAML2.0', 'SP.SingleLogoutService', 'LogoutRequest', $requestid, 
+	$logger->log(LOG_NOTICE, $trackId, 'SAML2.0', 'SP.SingleLogoutService', 'LogoutRequest', $requestid,
 		'IdP (' . $requester . ') is sending logout request to me SP (' . $responder . ')');
 
 	
@@ -64,7 +73,7 @@ if (isset($_GET['SAMLRequest'])) {
 	$httpredirect = new SimpleSAML_Bindings_SAML20_HTTPRedirect($config, $metadata);
 	
 	
-	$logger->log(LOG_NOTICE, $session->getTrackID(), 'SAML2.0', 'SP.SingleLogoutService', 'LogoutResponse', '-', 
+	$logger->log(LOG_NOTICE, $trackId, 'SAML2.0', 'SP.SingleLogoutService', 'LogoutResponse', '-',
 		'SP me (' . $responder . ') is sending logout response to IdP (' . $requester . ')');
 	
 	// Send the Logout response using HTTP POST binding.
-- 
GitLab