From 95ce29769535b759cc9488767b12b6526b575c4a Mon Sep 17 00:00:00 2001
From: Olav Morken <olav.morken@uninett.no>
Date: Tue, 11 Mar 2008 15:11:44 +0000
Subject: [PATCH] Added support for a different SingleLogoutServiceResponse
 location in XML idp configuration.

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@387 44740490-163a-0410-bde0-09ae8108e29a
---
 lib/SimpleSAML/Metadata/SAMLParser.php | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/lib/SimpleSAML/Metadata/SAMLParser.php b/lib/SimpleSAML/Metadata/SAMLParser.php
index 975029129..db8cc0e39 100644
--- a/lib/SimpleSAML/Metadata/SAMLParser.php
+++ b/lib/SimpleSAML/Metadata/SAMLParser.php
@@ -437,7 +437,9 @@ class SimpleSAML_Metadata_SAMLParser {
 	 * - 'entityid': The entity id of the entity described in the metadata.
 	 * - 'name': Autogenerated name for this entity. Currently set to the entity id.
 	 * - 'SingleSignOnService': String with the url of the SSO service which supports the redirect binding.
-	 * - 'SingleLogoutService': String with the url where we should send logout requests/responses.
+	 * - 'SingleLogoutService': String with the url where we should send logout requests(/responses).
+	 * - 'SingleLogoutServiceResponse': String where we should send logout responses (if this is different from
+	 *   the 'SingleLogoutService' endpoint.
 	 * - 'certFingerprint': Fingerprint of the X509Certificate from the metadata.
 	 *
 	 * Metadata must be loaded with one of the parse functions before this function can be called.
@@ -477,6 +479,11 @@ class SimpleSAML_Metadata_SAMLParser {
 		}
 		$ret['SingleLogoutService'] = $slo['location'];
 
+		/* If the response location is set, include it in the returned metadata. */
+		if($slo['responseLocation']) {
+			$ret['SingleLogoutServiceResponse'] = $slo['responseLocation'];
+		}
+
 
 		/* Find the certificate fingerprint. */
 		foreach($idp['keys'] as $key) {
@@ -676,7 +683,7 @@ class SimpleSAML_Metadata_SAMLParser {
 		$ep['location'] = $element->getAttribute('Location');
 
 		if($element->hasAttribute('ResponseLocation')) {
-			$ep['responseLocation'] = $element->getAttribute('Location');
+			$ep['responseLocation'] = $element->getAttribute('ResponseLocation');
 		}
 
 		if($isIndexed) {
-- 
GitLab