Favor ResponseLocation in metadata.
authorcantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Fri, 10 Aug 2007 03:50:06 +0000 (03:50 +0000)
committercantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Fri, 10 Aug 2007 03:50:06 +0000 (03:50 +0000)
git-svn-id: https://svn.middleware.georgetown.edu/cpp-sp/trunk@2407 cb58f699-b61c-0410-a6fe-9272a202ed29

shibsp/handler/impl/SAML2Logout.cpp

index 3f863c6..8efe4ab 100644 (file)
@@ -589,14 +589,18 @@ pair<bool,long> SAML2Logout::sendResponse(
     // Prepare response.
     auto_ptr<LogoutResponse> logout(LogoutResponseBuilder::buildLogoutResponse());
     logout->setInResponseTo(requestID);
-    if (ep)
-        logout->setDestination(ep->getLocation());
+    if (ep) {
+        const XMLCh* loc = ep->getResponseLocation();
+        if (!loc || !*loc)
+            loc = ep->getLocation();
+        logout->setDestination(loc);
+    }
     Issuer* issuer = IssuerBuilder::buildIssuer();
     logout->setIssuer(issuer);
     issuer->setName(application.getXMLString("entityID").second);
     fillStatus(*logout.get(), code, subcode, msg);
 
-    auto_ptr_char dest(ep ? ep->getLocation() : NULL);
+    auto_ptr_char dest(logout->getDestination());
 
     long ret = sendMessage(*encoder, logout.get(), relayState, dest.get(), role, application, httpResponse, "signResponses");
     logout.release();  // freed by encoder